house/tracking/make_markers.py

43 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
import cv2
import numpy as np
def stamp(target, source, x, y):
target[y:y+source.shape[0], x:x+source.shape[1]] = source
def main():
page = np.zeros((2970, 2100), np.uint8)
page[:,:] = 255
cv2.line(page, (20, 20), (1020, 20), 0, 2)
for offset in range(20, 1120, 100):
cv2.line(page, (offset, 0), (offset, 40), 0, 2)
cv2.putText(page, '10cm', (1040, 40), 0, 1, 0, 2)
cv2.line(page, (20, 20), (20, 1020), 0, 2)
for offset in range(20, 1120, 100):
cv2.line(page, (0, offset), (40, offset), 0, 2)
d = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_50)
stamp(page, cv2.aruco.drawCharucoDiamond(d, (0, 1, 2, 3), 200, 120), 220, 220)
cv2.putText(page, 'front', (220, 170), 0, 2, 0, 2)
stamp(page, cv2.aruco.drawCharucoDiamond(d, (4, 5, 6, 7), 160, 96), 220, 1220)
cv2.putText(page, 'back', (220, 1170), 0, 2, 0, 2)
stamp(page, cv2.aruco.drawMarker(d, 8, 200), 1220, 220)
cv2.putText(page, 'top', (1220, 170), 0, 2, 0, 2)
stamp(page, cv2.aruco.drawMarker(d, 9, 200), 1220, 620)
cv2.putText(page, 'left', (1220, 570), 0, 2, 0, 2)
stamp(page, cv2.aruco.drawMarker(d, 10, 200), 1220, 1020)
cv2.putText(page, 'right', (1220, 970), 0, 2, 0, 2)
cv2.imwrite('markers.png', page)
if __name__ == '__main__':
main()