Charuco: fixed multidetection
This commit is contained in:
@@ -15,7 +15,7 @@ class BoardDetectorCharuco(BoardDetector):
|
|||||||
board: cv.aruco.CharucoBoard = None
|
board: cv.aruco.CharucoBoard = None
|
||||||
dict_type = None
|
dict_type = None
|
||||||
def __init__(self, name: str, dict_type: int, board_id: str, board_size: tuple[int, int]):
|
def __init__(self, name: str, dict_type: int, board_id: str, board_size: tuple[int, int]):
|
||||||
self.detector, self.board = factory(dict_type, board_size, ids=self.ids)
|
self.detector, self.board = factory(dict_type, board_size)
|
||||||
self.dict_type = dict_type
|
self.dict_type = dict_type
|
||||||
self.board_size = board_size
|
self.board_size = board_size
|
||||||
self.detector, self.board = factory(dict_type, board_size)
|
self.detector, self.board = factory(dict_type, board_size)
|
||||||
@@ -36,14 +36,16 @@ class BoardDetectorCharuco(BoardDetector):
|
|||||||
success = False
|
success = False
|
||||||
obj_points = None
|
obj_points = None
|
||||||
img_points = None
|
img_points = None
|
||||||
|
|
||||||
corners, ids, _, _ = self.detector.detectBoard(image)
|
corners, ids, _, _ = self.detector.detectBoard(image)
|
||||||
if corners is not None:
|
corners, ids = self.match_ids(corners, ids)
|
||||||
if len(ids) >= len(self.board.getIds()):
|
|
||||||
_obj_points, _img_points = self.board.matchImagePoints(corners, ids)
|
if len(ids) >= len(self.board.getIds()):
|
||||||
if len(_obj_points) > 0 and len(_img_points) > 0:
|
_obj_points, _img_points = self.board.matchImagePoints(corners, ids)
|
||||||
success = True
|
if len(_obj_points) > 0 and len(_img_points) > 0:
|
||||||
obj_points = _obj_points
|
success = True
|
||||||
img_points = _img_points
|
obj_points = _obj_points
|
||||||
|
img_points = _img_points
|
||||||
|
|
||||||
return success, obj_points, img_points
|
return success, obj_points, img_points
|
||||||
|
|
||||||
@@ -54,9 +56,9 @@ class BoardDetectorCharuco(BoardDetector):
|
|||||||
|
|
||||||
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
|
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
|
||||||
charuco_corners, charuco_ids, marker_corners, marker_ids = self.detector.detectBoard(gray)
|
charuco_corners, charuco_ids, marker_corners, marker_ids = self.detector.detectBoard(gray)
|
||||||
|
corners, ids = self.match_ids(charuco_corners, charuco_ids)
|
||||||
|
|
||||||
if charuco_corners is not None:
|
if len(ids) > 0:
|
||||||
|
|
||||||
# Draw marker box
|
# Draw marker box
|
||||||
if draw_marker_box:
|
if draw_marker_box:
|
||||||
cv.aruco.drawDetectedMarkers(image, marker_corners)
|
cv.aruco.drawDetectedMarkers(image, marker_corners)
|
||||||
|
|||||||
Reference in New Issue
Block a user