質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2393閲覧

python cv2.ArUco オリジナルマーカーの読み取り

vibrato

総合スコア52

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2017/12/06 05:28

OpenCVでのAR実装ライブラリArucoにおいてオリジナルのマーカー
(大げさに言えば、ネット上でそこらへんに転がっている画像を、コーナーを認識できるように加工したもの)
を認識させる方法はありますでしょうか?

https://gist.github.com/hauptmech/6b8ca2c05a3d935c97b1c75ec9ad85ff

python

1import numpy as np 2import cv2 3 4cap = cv2.VideoCapture(0) 5 6dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_50) 7#dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_ARUCO_ORIGINAL) 8 9while(True): 10 11 # Capture frame-by-frame 12 ret, frame = cap.read() 13 14 # Our operations on the frame come here 15 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 16 17 res = cv2.aruco.detectMarkers(gray,dictionary) 18 # print(res[0],res[1],len(res[2])) 19 20 if len(res[0]) > 0: 21 cv2.aruco.drawDetectedMarkers(gray,res[0],res[1]) 22 23 # Display the resulting frame 24 cv2.imshow('frame',gray) 25 if cv2.waitKey(1) & 0xFF == ord('q'): 26 break 27 28# When everything done, release the capture 29cap.release() 30cv2.destroyAllWindows()

こちらのコードは上記のURLを張り付けただけのものですが、読み取るマーカーもArUco内で生成可能な付属(されているものと言えばよいのでしょうか?)のものです。
この読み取るマーカーをオリジナルのものにしたいと考えているのですが、可能でしょうか?

【DICT_ARUCO_ORIGINAL】
ディクショナリの種類にこのようなものがありますが、リファレンスを覗くと
「standard ArUco Library Markers. 1024 markers, 5x5 bits, 0 minimum distance 」
このように書いてあるので、希望のマーカーにはなり得ないので質問させていただきました。

良い方法があれば是非ご教授お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

オリジナルのマーカーということですが、既存のマーカーに関してどのような変化を加えようとしているのでしょうか?
例えばもっと複雑な図形がよいなどでしょうか?

ポーズまで識別するので、回転対称性がないように設計されますし、同時に使う他のマーカーと区別がつくように既存のセットが設計されているはずです。

それとも似たようなマーカーを簡易に識別する手段として考えているのでしょうか。

投稿2017/12/06 08:57

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vibrato

2017/12/06 09:18

回答ありがとうございます。 >>既存のマーカーに関してどのような変化を加えようとしているのでしょうか? 既存のマーカーに変化を加えるのではなく、「任意の画像」をマーカーにすることを考えています >>例えばもっと複雑な図形がよいなどでしょうか? 上と似たような答えになってしまうのですが、図形の識別ではなく 「任意の画像」の識別を考えています。 ただし、単に「任意の画像」といってもそれを識別することは難しいと思うので、 コーナーを識別できるように「任意の画像」に枠をつける加工を施し、それを識別してもらいたいという希望です。 任意画像Aにid=1 任意画像Bにid=2 と与えた場合、任意画像Aを識別し、id=1を返してほしいといった感じです。 >>それとも似たようなマーカーを簡易に識別する手段として考えているのでしょうか。 こちらも上記と同じになってしまうのですが、 全く別の画像。図形ではなく、任意の画像を、マーカーとして利用できないものかと考えて質問させていただきました。
mkgrei

2017/12/06 09:56

なんとなくやりたいことがわかりました。 画像の枠に特徴があるのであれば、境界抽出の手法で検出することが可能です。 判定速度が下がりますが、最近お流行りの深層学習を用いることを考えられます。 https://qiita.com/ozw/items/363a947971966c42642f 実用的には軽く候補を絞ってから高度の手法を適応するのが最適でしょうか。
vibrato

2017/12/06 10:21

>>最近お流行りの深層学習を用いることを考えられます。 TensorFlow最近よく聞く深層学習のフレームワークですね。 これをご紹介いただいたということは、やはり別のフレームワークが必要になるということでしょうか? cv2.ArUco内の機能で実現できないものかと期待したのですが、そうもいかない。という解釈でよろしいでしょうか?
mkgrei

2017/12/06 10:32

古典的にご所望の機能を実現するには、 ①枠の抽出 ②台形補正 ③テンプレートマッチング が最も簡易のように思えます。 これらはすべてcv2の方で実現することができます。 http://nixeneko.hatenablog.com/entry/2016/01/21/163937 ただこれだとエッジ抽出の画像処理について少々勉強する必要があります。
mkgrei

2017/12/06 10:33

TensorFlow APIの利点は教師データさえ用意すれば、後はフレームワークの方でうまい具合なんとかしてくれることにあります。
vibrato

2017/12/06 14:41

実現項目まで教えていただきありがとうございます。 OpenCVでの実現を目指し、どうしても不十分であればTensorFlowを利用してみたいと思います。 ご親切にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問