aboutsummaryrefslogtreecommitdiff
path: root/src/argaze/ArUcoMarkers/ArUcoMarker.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/argaze/ArUcoMarkers/ArUcoMarker.py')
-rw-r--r--src/argaze/ArUcoMarkers/ArUcoMarker.py21
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))
+