From c48a37a3e0242b7effb028d074923e269b415d78 Mon Sep 17 00:00:00 2001 From: Théo de la Hogue Date: Tue, 29 Nov 2022 12:11:27 +0100 Subject: Adding new test for ArUcoCamera. Testing board tracking. --- src/argaze.test/ArUcoMarkers/ArUcoCamera.py | 42 +++++++++++++++++++++ src/argaze.test/ArUcoMarkers/ArUcoTracker.py | 23 ++++++++++- src/argaze.test/ArUcoMarkers/utils/camera.json | 31 +++++++++++++++ src/argaze.test/ArUcoMarkers/utils/full_hd.png | Bin 116210 -> 0 bytes .../ArUcoMarkers/utils/full_hd_board.png | Bin 0 -> 18475 bytes .../ArUcoMarkers/utils/full_hd_marker.png | Bin 0 -> 116210 bytes 6 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 src/argaze.test/ArUcoMarkers/ArUcoCamera.py create mode 100644 src/argaze.test/ArUcoMarkers/utils/camera.json delete mode 100644 src/argaze.test/ArUcoMarkers/utils/full_hd.png create mode 100644 src/argaze.test/ArUcoMarkers/utils/full_hd_board.png create mode 100644 src/argaze.test/ArUcoMarkers/utils/full_hd_marker.png (limited to 'src/argaze.test') diff --git a/src/argaze.test/ArUcoMarkers/ArUcoCamera.py b/src/argaze.test/ArUcoMarkers/ArUcoCamera.py new file mode 100644 index 0000000..7e50e8c --- /dev/null +++ b/src/argaze.test/ArUcoMarkers/ArUcoCamera.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python + +import unittest +import os + +from argaze.ArUcoMarkers import ArUcoCamera + +import numpy + +class TestArUcoCameraClass(unittest.TestCase): + """Test ArUcoCamera class.""" + + def test_new(self): + """Test ArUcoCamera creation.""" + + # Check defaut camera creation + aruco_camera = ArUcoCamera.ArUcoCamera() + + # Check ArUco camera + self.assertEqual(aruco_camera.rms, 0.0) + self.assertIsNone(numpy.testing.assert_array_equal(aruco_camera.dimensions, numpy.array([0, 0]))) + self.assertIsNone(numpy.testing.assert_array_equal(aruco_camera.K, ArUcoCamera.K0)) + self.assertIsNone(numpy.testing.assert_array_equal(aruco_camera.D, ArUcoCamera.D0)) + + def test_from_json(self): + + # Edit camera file path + current_directory = os.path.dirname(os.path.abspath(__file__)) + json_filepath = os.path.join(current_directory, 'utils/camera.json') + + # Load camera calibration + aruco_camera = ArUcoCamera.ArUcoCamera.from_json(json_filepath) + + # Check ArUco camera + self.assertEqual(aruco_camera.rms, 1.0) + self.assertIsNone(numpy.testing.assert_array_equal(aruco_camera.dimensions, numpy.array([1920, 1080]))) + self.assertIsNone(numpy.testing.assert_array_equal(aruco_camera.K, [[1.0, 0.0, 1.0], [0.0, 1.0, 1.0], [0.0, 0.0, 1.0]])) + self.assertIsNone(numpy.testing.assert_array_equal(aruco_camera.D, [-1.0, -0.5, 0.0, 0.5, 1.0])) + +if __name__ == '__main__': + + unittest.main() \ No newline at end of file diff --git a/src/argaze.test/ArUcoMarkers/ArUcoTracker.py b/src/argaze.test/ArUcoMarkers/ArUcoTracker.py index 67bbef9..acc0000 100644 --- a/src/argaze.test/ArUcoMarkers/ArUcoTracker.py +++ b/src/argaze.test/ArUcoMarkers/ArUcoTracker.py @@ -4,7 +4,7 @@ import unittest import os import math -from argaze.ArUcoMarkers import ArUcoMarkersDictionary, ArUcoCamera, ArUcoTracker +from argaze.ArUcoMarkers import ArUcoMarkersDictionary, ArUcoCamera, ArUcoTracker, ArUcoBoard import cv2 as cv import numpy @@ -32,7 +32,7 @@ class TestArUcoTrackerClass(unittest.TestCase): # Load picture Full HD to test ArUcoMarker tracking current_directory = os.path.dirname(os.path.abspath(__file__)) - frame = cv.imread(os.path.join(current_directory, 'utils/full_hd.png')) + frame = cv.imread(os.path.join(current_directory, 'utils/full_hd_marker.png')) # Check ArUcoMarker tracking aruco_tracker.track(frame) @@ -58,6 +58,25 @@ class TestArUcoTrackerClass(unittest.TestCase): self.assertEqual(track_count, 1) self.assertEqual(markers_count[0], 1) + def test_track_board(self): + """Test track board method.""" + + aruco_dictionary = ArUcoMarkersDictionary.ArUcoMarkersDictionary('DICT_ARUCO_ORIGINAL') + aruco_board = ArUcoBoard.ArUcoBoard(aruco_dictionary, 7, 5, 5, 3) + aruco_camera = ArUcoCamera.ArUcoCamera() + aruco_tracker = ArUcoTracker.ArUcoTracker(aruco_dictionary, 3, aruco_camera) + + # Load picture Full HD to test ArUcoMarker board tracking + current_directory = os.path.dirname(os.path.abspath(__file__)) + frame = cv.imread(os.path.join(current_directory, 'utils/full_hd_board.png')) + + # Check ArUcoMarker board tracking + aruco_tracker.track_board(frame, aruco_board, aruco_board.markers_number) + + self.assertEqual(aruco_tracker.board_corners_number, aruco_board.corners_number) + self.assertEqual(len(aruco_tracker.board_corners), 24) + self.assertEqual(len(aruco_tracker.board_corners_identifier), 24) + if __name__ == '__main__': unittest.main() \ No newline at end of file diff --git a/src/argaze.test/ArUcoMarkers/utils/camera.json b/src/argaze.test/ArUcoMarkers/utils/camera.json new file mode 100644 index 0000000..988731c --- /dev/null +++ b/src/argaze.test/ArUcoMarkers/utils/camera.json @@ -0,0 +1,31 @@ +{ + "rms": 1.0, + "dimensions": [ + 1920, + 1080 + ], + "K": [ + [ + 1.0, + 0.0, + 1.0 + ], + [ + 0.0, + 1.0, + 1.0 + ], + [ + 0.0, + 0.0, + 1.0 + ] + ], + "D": [ + -1.0, + -0.5, + 0.0, + 0.5, + 1.0 + ] +} \ No newline at end of file diff --git a/src/argaze.test/ArUcoMarkers/utils/full_hd.png b/src/argaze.test/ArUcoMarkers/utils/full_hd.png deleted file mode 100644 index 42146fe..0000000 Binary files a/src/argaze.test/ArUcoMarkers/utils/full_hd.png and /dev/null differ diff --git a/src/argaze.test/ArUcoMarkers/utils/full_hd_board.png b/src/argaze.test/ArUcoMarkers/utils/full_hd_board.png new file mode 100644 index 0000000..d30b300 Binary files /dev/null and b/src/argaze.test/ArUcoMarkers/utils/full_hd_board.png differ diff --git a/src/argaze.test/ArUcoMarkers/utils/full_hd_marker.png b/src/argaze.test/ArUcoMarkers/utils/full_hd_marker.png new file mode 100644 index 0000000..42146fe Binary files /dev/null and b/src/argaze.test/ArUcoMarkers/utils/full_hd_marker.png differ -- cgit v1.1