Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ArUcoのマーカーを基準に検知域を表示

ロボットの動作領域など、ある程度範囲は決まっているが当日の状況に応じて少し変更する場合
設定ファイルで細かいパラメータを設定する方法もありますが……
今回は固定USBカメラからArUcoのマーカーを読み取り、その重心を基準に右下方向に伸びる動作領域を画像に表示させるようなツールを実装します

実際のところ

環境

ハード
  • nano pi neo 2
ソフトウェア

もとになる画像

arマーカー42番を使用し

$ convert logo: ar42.png -gravity center -compose over -composite - | feh -


python

import cv2

aruco = cv2.aruco
dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)

img_src = cv2.imread("target.png", 1)

corners, ids, rejectedImgPoints = aruco.detectMarkers( img_src, dictionary )

cent_x = int((corners[0][0][0][0] + corners[0][0][2][0])/2)
cent_y = int((corners[0][0][0][1] + corners[0][0][2][1])/2)
print( cent_x, cent_y)

cv2.rectangle(img_src,
              pt1=(cent_x,       cent_y      ),
              pt2=(cent_x + 160, cent_y + 90),
              color=(0, 255, 0),
              thickness=3,
              lineType=cv2.LINE_4,
              shift=0)

cv2.imwrite("result.png", img_src)

結果


参考もと

dev.classmethod.jp