#映像からARを見つけたい
ロボットとかをやってるとARマーカーをランドマークとしていろいろしたくなる。
今回はpython3とopencvで簡単にカメラからARマーカーを見つけていく。
環境
python3.5.4
matplotlib
opencv(contributeが入ってるやつ)
opencv-contributeの入れ方
普通のopencvではダメ
ライセンスの関係でaruco
が入っていないらしい
大人の世界って怖いね
pip uninstall opencv-python
通常版のopencvをアンインストール
pip install opencv-contrib-python
目的のopencvをインストール
#ARマーカーの作成
generate.py
import cv2
import matplotlib.pyplot as plt
aruco = cv2.aruco
dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)
generator = aruco.drawMarker(dictionary, 0, 100)#第2引数がID 第3引数がピクセルサイズ
plt.imshow(generator)
plt.show()
こんなWindowが表示されるはず
これをグレースケールの画像として保存
#WebカメラからARマーカーを探す
opencv様のチュートリアルでwebカメラの扱いが書いてあるのでそれを改造
main.py
import cv2
import numpy as np
import matplotlib.pyplot as plt
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FPS,15)
aruco = cv2.aruco
dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)
while(True):
ret, frame = cap.read()
corners, ids, rejectedImgPoints = aruco.detectMarkers(frame, dictionary)
#ここで映像からマーカーを検出
aruco.drawDetectedMarkers(frame, corners, ids, (0,255,0))
#マーカーを描画
cv2.imshow('frame',frame)
print(cap.get(cv2.CAP_PROP_FPS))
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
15行でこれが動くOPPYTHONすごすぎ pic.twitter.com/Naf3ZxYiGF
— tayutayu (@tayutayufk) May 20, 2020
こんな感じで相当精度よく動いてくれます
#最後に
pythonってやりたいことがすぐできていいけど
つまらん
CUDAでゴリゴリしたいんじゃ....