4/15(火)~17(木) 第5回量子コンピューティングEXPO春(東京ビッグサイト)に共同出展します☆彡
画像処理

New!! プラレールにARマーカーを付けて動画検出

AI要約

プラレールの電車にARマーカーを貼り付け、OpenCVを使って動画内で位置検出に挑戦しました。リアルタイム検出のためにはカメラの設定も重要です。自由研究にも最適な内容です。

やること

「プラレールを制御するシリーズ」が徐々に増えてきました。楽ちい!

今回は電車の位置を取得するために、OpenCVでARマーカーの検出を試してみます。

参考文献

「ArUco」で検索してください。先人の知恵をお借りします。

PythonでARマーカーを映像から探す - Qiita
#映像からARを見つけたいロボットとかをやってるとARマーカーをランドマークとしていろいろしたくなる。今回はpython3とopencvで簡単にカメラからARマーカーを見つけていく。環境py…
ArUcoマーカーの認識練習|Kan Hatakeyama
はじめに 本記事は、ロボットに化学実験をさせるための試行錯誤の記録です。 webに諸々の類似情報があるかもしれませんが、勉強のため、車輪の再発明をする覚悟で進めています。 本日は、ロボット分野で定番と...

ARマーカーの生成

こちらのコードでID=0, 1, 2のマーカーを生成しました。

import cv2
import matplotlib.pyplot as plt

#ArUco
aruco = cv2.aruco

#4x4マーカーの辞書
dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)

#生成
img = aruco.generateImageMarker(dictionary, 0, 100) #第2引数がID、第3引数がピクセルサイズ

#表示
plt.imshow(img, cmap='gray')
plt.show()

#保存
cv2.imwrite('marker_0.png', img)

ID=0のマーカーです。

山手線、つくばエクスプレス、N700系に貼りました。マーカーは余白が必要なので印刷時はご注意を。

ARマーカーの動画検出

OpencvでWebカメラの映像をキャプチャしながらマーカー検出を行いました。「q」キーで終了。

import cv2
import numpy as np

#カメラ
cap = cv2.VideoCapture(0)

#カメラ設定
cap.set(cv2.CAP_PROP_FPS, 30)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
#露出などは別途設定

#ArUco
aruco = cv2.aruco
#4x4マーカーの辞書
dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)

while 1:
    #カメラキャプチャ
    ret, frame = cap.read()
    
    #表示
    # cv2.imshow('frame', frame)
    
    #マーカー検出
    corners, ids, rejectedImgPoints = aruco.detectMarkers(frame, dictionary)
    
    #写真に書き込み
    aruco.drawDetectedMarkers(frame, corners, ids, borderColor=(0, 0, 255)) #BGR
    
    #表示
    cv2.imshow('frame', frame)
    
    #qで終了
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

#カメラ解放
cap.release()
cv2.destroyAllWindows()

ほとんどフレーム落ちせず検出できていることが分かります。

ちなみにWebカメラはロジクールのC615、コスパがとても良かった製品です。こいつのフレームレートは最大30fpsなのでそのままでは電車がブレブレでまったくマーカーが反応しません。

そこで露出などを手動調整しておきます。ロジクール公式の調整ソフトがあるのですがほぼゴミ(似たソフトが多い、対応が謎、古い製品をなかったことにしすぎ)なのでサードパーティ製の優秀なソフト「NVCap_R」を使用しました。

こちらのサイトで紹介されています。(公式サイトが見つからず、すみません)

おわりに

これで材料は揃いました。

次回、いよいよQUBOアニーリングでプラレールの衝突回避(実物)です!

続編!

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

タイトルとURLをコピーしました