diff options
author | Théo de la Hogue | 2022-11-15 13:53:57 +0100 |
---|---|---|
committer | Théo de la Hogue | 2022-11-15 13:53:57 +0100 |
commit | fa0802e176fb8bde21f1e41971781fb9c1a9686d (patch) | |
tree | 19a64512a17f2979ba80805901f3393f0e9ef947 /src/argaze/ArUcoMarkers/ArUcoMarker.py | |
parent | 80a3ee0d369bbca65bb5f1ffff9489af37085aab (diff) | |
download | argaze-fa0802e176fb8bde21f1e41971781fb9c1a9686d.zip argaze-fa0802e176fb8bde21f1e41971781fb9c1a9686d.tar.gz argaze-fa0802e176fb8bde21f1e41971781fb9c1a9686d.tar.bz2 argaze-fa0802e176fb8bde21f1e41971781fb9c1a9686d.tar.xz |
Refactoring marker creation.
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)) + |