Files
Roboteksperimentarium/selflocalization/makelandmark.py
NikolajDanger f6ce6456b8
2022-09-28 10:55:21 +02:00

46 lines
1.5 KiB
Python

import cv2 # Import the OpenCV library
import numpy as np
# TODO make this configurable from the command line using parser
markerID = 10 # Try 1 - 4
# Define some relevant constants
dpi = 72 # dots (pixels) per inch [inch^(-1)]
inch2mm = 25.4 # [mm / inch]
dpmm = dpi / inch2mm # Dots per mm [mm^(-1)]
# Define size of output image to fit A4 paper
a4width = 210.0 # [mm]
a4height = 297.0 # [mm]
# Size of output image
width = np.uint(np.round(a4width * dpmm)) # [pixels]
height = np.uint(np.round(a4height * dpmm)) # [pixels]
# Size of ArUco marker
markerPhysicalSize = 150 # [mm]
markerSize = np.uint(np.round(markerPhysicalSize * dpmm)) # [pixels]
# Create landmark image (all white gray scale image)
#landmarkImage = np.ones((width, height), dtype=np.uint8) * np.uint8(255)
landmarkImage = np.ones((height, width), dtype=np.uint8) * np.uint8(255)
# Initialize the ArUco dictionary
arucoDict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_6X6_250)
# Draw marker
startWidth = int(np.round((width-markerSize)/2))
startHeight = int(np.round((height-markerSize)/2))
landmarkImage[startHeight:int(startHeight+markerSize), startWidth:int(startWidth+markerSize)] = cv2.aruco.drawMarker(arucoDict, markerID, markerSize, 1)
cv2.putText(landmarkImage, str(markerID), (startWidth, startHeight - 60), cv2.FONT_HERSHEY_SIMPLEX, 2.0, (0,0,0), 2)
# Save image
cv2.imwrite("../../../data/landmark" + str(markerID) + ".png", landmarkImage)
# Show image
cv2.namedWindow("Landmark")
cv2.imshow("Landmark", landmarkImage)
cv2.waitKey()