Pythonで(OpenCVライブラリを使用して)画像内のマーカーを特定するスクリプトを作成したいと考えています。マーカーは、このような何かを見て:2D画像のマーカーを検出する[Python/OpenCV]
画像をロードした後、スクリプトは(マーカーの数値を返す)画像にあるどのマーカー印刷する必要があります。例えば、私はこの写真ロードする場合:このイメージの
をスクリプトは、3つの数値を返す必要があります:1、2および3 Iスクリプトを持って、画像を読み込み、図形(円、正方形などを認識します私はいくつかの数字で構成されたマーカー全体を認識することは考えていません。何か案は?アルゴリズムやその他の解決策に関するご提案をお願いします。
import numpy as np
import cv2
img = cv2.imread('B.jpg')
gray = cv2.imread('B.jpg',0)
ret,thresh = cv2.threshold(gray,120,255,1)
contours,h = cv2.findContours(thresh,1,2)
for cnt in contours:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True)
print len(approx)
if len(approx)==4:
print "square"
cv2.drawContours(img,[cnt],0,(0,0,255))
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
もちろん、私が必要とするのは矩形だけです。 ご協力いただきありがとうございます。
1.外側の輪郭を見つけます。 2.輪郭ごとにバウンディングボックスを選択します(画像内の外形が四角形なので、輪郭と同じにする必要があります)。3.画像のサイズを変更して、基準マーカと同じサイズにします。 4.サイズ変更された画像領域とティファイ・マーカのエッジ画像に面取りマッチングを使用する。 5. 1つの面取りマッチングがsmalöならば、検出マーカ – Micka
として最小のものを選択します。追加の遠近歪みがある場合は、boundingBoxesの代わりにクワッドを見つけて、パースペクティブワーピングを使用する必要があります。 – Micka
私はおそらく、ここで説明したように機能のマッチングを試みるでしょうhttp://docs.opencv.org/3.1.0/d1/de0/tutorial_py_feature_homography.html#gsc.tab=0しかし、私はそれを働かせませんでした。この投稿を見てください:http://stackoverflow.com/questions/20259025/module-object-has-no-attribute-drawmatches-opencv-python – tfv