diff options
Diffstat (limited to 'src/argaze/ArUcoMarkers/ArUcoMarker.py')
-rw-r--r-- | src/argaze/ArUcoMarkers/ArUcoMarker.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/argaze/ArUcoMarkers/ArUcoMarker.py b/src/argaze/ArUcoMarkers/ArUcoMarker.py index ef03ffd..5879a7b 100644 --- a/src/argaze/ArUcoMarkers/ArUcoMarker.py +++ b/src/argaze/ArUcoMarkers/ArUcoMarker.py @@ -39,6 +39,16 @@ class ArUcoMarker(): return self.corners[0].mean(axis=0) + def image(self, dpi) -> numpy.array: + """Create marker matrix image at a given resolution.""" + + dimension = round(dpi * self.size / 2.54) + matrix = numpy.zeros((dimension, dimension, 1), dtype="uint8") + + aruco.drawMarker(self.dictionary.markers, self.identifier, dimension, matrix, 1) + + return numpy.repeat(matrix, 3).reshape(dimension, dimension, 3) + def draw(self, frame, K, D): """Draw marker in frame.""" @@ -47,4 +57,13 @@ class ArUcoMarker(): cv.drawFrameAxes(frame, K, D, self.rotation, self.translation, self.size) - aruco.drawDetectedMarkers(frame, [self.corners], numpy.array([self.identifier]))
\ No newline at end of file + aruco.drawDetectedMarkers(frame, [self.corners], numpy.array([self.identifier])) + + def save(self, destination_folder, dpi): + """Save marker image as .png file.""" + + filename = f'{self.dictionary.name}_{self.dictionary.format}_{self.identifier}.png' + filepath = f'{destination_folder}/{filename}' + + cv.imwrite(filepath, self.image(dpi)) + |