Skip to content

Commit

Permalink
add py tests
Browse files Browse the repository at this point in the history
  • Loading branch information
AleksandrPanov committed May 4, 2022
1 parent 36e28be commit dc7d392
Showing 1 changed file with 48 additions and 1 deletion.
49 changes: 48 additions & 1 deletion modules/aruco/misc/python/test/test_aruco.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,54 @@ def test_getDistanceToId(self):

self.assertEqual(dist, 0)


def test_aruco_detector(self):
aruco_params = cv.aruco.DetectorParameters_create()
aruco_dict = cv.aruco.Dictionary_get(cv.aruco.DICT_4X4_250)
aruco_detector = cv.aruco.ArucoDetector_create(aruco_dict, aruco_params)
id = 2
marker_size = 100
offset = 10
img_marker = cv.aruco.drawMarker(aruco_dict, id, marker_size, aruco_params.markerBorderBits)
img_marker = np.pad(img_marker, pad_width=offset, mode='constant', constant_values=255)
gold_corners = np.array([[offset, offset],[marker_size+offset-1.0,offset],
[marker_size+offset-1.0,marker_size+offset-1.0],
[offset, marker_size+offset-1.0]], dtype=np.float32)
expected_corners, expected_ids, expected_rejected = cv.aruco.detectMarkers(img_marker, aruco_dict,
parameters=aruco_params)

corners, ids, rejected = aruco_detector.detectMarkers(img_marker)

self.assertEqual(len(ids), 1)
self.assertEqual(ids[0], id)
for i in range(0, len(ids)):
np.testing.assert_array_equal(corners[i], expected_corners[i])#expected_corners[i][0])
np.testing.assert_array_equal(corners[i], gold_corners)

def test_aruco_detector_refine(self):
aruco_params = cv.aruco.DetectorParameters_create()
aruco_dict = cv.aruco.Dictionary_get(cv.aruco.DICT_4X4_250)
aruco_detector = cv.aruco.ArucoDetector_create(aruco_dict, aruco_params)
board_size = (3, 4)
board = cv.aruco.GridBoard_create(board_size[0], board_size[1], 5.0, 1.0, aruco_dict)
board_image = board.draw((board_size[0]*50, board_size[1]*50), marginSize=10)

corners, ids, rejected = aruco_detector.detectMarkers(board_image)
#corners, ids, rejected = cv.aruco.detectMarkers(board_image, aruco_dict)
self.assertEqual(board_size[0]*board_size[1], len(ids))

part_corners, part_ids, part_rejected = corners[:-1], ids[:-1], list(rejected)
part_rejected.append(corners[-1])

refine_corners, refine_ids, refine_rejected, recovered_ids = aruco_detector.refineDetectedMarkers(board_image, board, part_corners, part_ids, part_rejected)
#refine_corners, refine_ids, refine_rejected, recovered_ids = cv.aruco.refineDetectedMarkers(board_image, board, part_corners, part_ids, part_rejected)

self.assertEqual(board_size[0] * board_size[1], len(refine_ids))
self.assertEqual(1, len(recovered_ids))

#self.assertEqual(ids[-1], recovered_ids[0])
self.assertEqual(ids[-1], refine_ids[-1])
#self.assertEqual((4, 2), refine_corners[0].shape)
np.testing.assert_array_equal(corners, refine_corners)

if __name__ == '__main__':
NewOpenCVTests.bootstrap()

0 comments on commit dc7d392

Please sign in to comment.