今回は、前回作ったマーカーをウェブカメラで検出します。ウェブカメラの映像を読み込む方法は前の記事(http://blog.livedoor.jp/chisato_tofu/archives/25032246.html)を参照してください。
  1. import cv2

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

  4. def arReader():
  5.     cap = cv2.VideoCapture(0)

  6.     while True:

  7.         ret, frame = cap.read()
  8.         
  9.         Height, Width = frame.shape[:2]

  10.         img = cv2.resize(frame,(int(Width),int(Height)))

  11.         corners, ids, rejectedImgPoints = aruco.detectMarkers(img, dictionary)

  12.         aruco.drawDetectedMarkers(img, corners, ids, (0,255,0))

  13.         cv2.imshow('drawDetectedMarkers', img)
  14.         
  15.         key = cv2.waitKey(1) & 0xFF
  16.         if key == ord('q'): break

  17.     cap.release()
  18.     cv2.destroyAllWindows()


  19. arReader()
4行目で使用する辞書情報を取得しているのでここを変更すると5X5やもっと多い数のマーカーなども使用できるはずです。
17行目でマーカーを検出し、19行目で描画しています。

 これを実行すると↓のように読み取ることができるはずです。
スクリーンショット 2020-10-18 143626