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

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

ただいまの
回答率

91.37%

  • Python 3.x

    2398questions

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

  • OpenCV

    615questions

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

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

解決済

回答 1

投稿 2017/12/06 14:28

  • 評価
  • クリップ 0
  • VIEW 50

vibrato

score 5

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

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

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

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

while(True):

    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    res = cv2.aruco.detectMarkers(gray,dictionary)
   # print(res[0],res[1],len(res[2]))

    if len(res[0]) > 0:
        cv2.aruco.drawDetectedMarkers(gray,res[0],res[1])

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()


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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

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

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

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

投稿 2017/12/06 17:57

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/06 18:18

    回答ありがとうございます。

    >>既存のマーカーに関してどのような変化を加えようとしているのでしょうか?
    既存のマーカーに変化を加えるのではなく、「任意の画像」をマーカーにすることを考えています

    >>例えばもっと複雑な図形がよいなどでしょうか?
    上と似たような答えになってしまうのですが、図形の識別ではなく
    「任意の画像」の識別を考えています。
    ただし、単に「任意の画像」といってもそれを識別することは難しいと思うので、
    コーナーを識別できるように「任意の画像」に枠をつける加工を施し、それを識別してもらいたいという希望です。
    任意画像Aにid=1
    任意画像Bにid=2
    と与えた場合、任意画像Aを識別し、id=1を返してほしいといった感じです。

    >>それとも似たようなマーカーを簡易に識別する手段として考えているのでしょうか。
    こちらも上記と同じになってしまうのですが、
    全く別の画像。図形ではなく、任意の画像を、マーカーとして利用できないものかと考えて質問させていただきました。

    キャンセル

  • 2017/12/06 18:56

    なんとなくやりたいことがわかりました。

    画像の枠に特徴があるのであれば、境界抽出の手法で検出することが可能です。
    判定速度が下がりますが、最近お流行りの深層学習を用いることを考えられます。
    https://qiita.com/ozw/items/363a947971966c42642f

    実用的には軽く候補を絞ってから高度の手法を適応するのが最適でしょうか。

    キャンセル

  • 2017/12/06 19:21

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

    キャンセル

  • 2017/12/06 19:32

    古典的にご所望の機能を実現するには、
    ①枠の抽出
    ②台形補正
    ③テンプレートマッチング
    が最も簡易のように思えます。
    これらはすべてcv2の方で実現することができます。
    http://nixeneko.hatenablog.com/entry/2016/01/21/163937

    ただこれだとエッジ抽出の画像処理について少々勉強する必要があります。

    キャンセル

  • 2017/12/06 19:33

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

    キャンセル

  • 2017/12/06 23:41

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

    ご親切にありがとうございました!!

    キャンセル

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

ただいまの回答率

91.37%

関連した質問

  • 解決済

    raspberrypi+pyhton+openCV 顔認識コードでとある行の次が必ずえらーに

    前提・実現したいこと USB CAM からの動画をキャプチャーし、顔認識し、四角い枠で囲みたいです。 発生している問題・エラーメッセージ 下記コード中、 for (x,

  • 解決済

    【wxpython】二つのテキスト画面のスクロールを同期させたい

    GUIで二つのテキスト画面を表示して、スクロールを同期させれず苦戦しています。 wxpythonのTextCtrl(style=wx.TE_MULTILIN)を二つ用意して、

  • 解決済

    pythonの辞書型について

    pythonの辞書型をソートした際に,スマートに新しく定義できる方法はないでしょうか? 例えば今までソートしたものを以下のように新しい辞書型に移し変えていました. new_

  • 解決済

    pythonのコードについてです

    pythonに関してです import logging logging.basicConfig(format='%(asctime)s : %(levelname)s : %(

  • 解決済

    配列の要素を4つずつ横8こずつ出力させたい

    配列の要素を4つずつ横8こずつ出力させたいです。 ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm

  • 解決済

    opencv 円検出

    前提・実現したいこと 動画を読み込みその動画から円を検出して描画するプログラムを書こうと思っています。 発生している問題・エラーメッセージ 動画は読み込んで出力することができま

  • 解決済

    opencv python 画像処理

    # -*- coding: utf-8 -*- import cv2 import numpy as np # フレーム差分の計算 def frame_sub(src1, src

  • 解決済

    Python 内包表記

    jupyter notebookでとある数列を求めるプログラムを作りました。 for文の中にあるfor文(for j in range(compare.size + 1)...)を

同じタグがついた質問を見る

  • Python 3.x

    2398questions

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

  • OpenCV

    615questions

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