#!/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()