さて、画像/テンプレートで変形したサブ画像を見つけるにはどうすればよいか疑問に思っていました。現時点では、cv2.matchTemplate を使用しており、時々動作します。指定された許容レベルと背景の「ノイズ」に依存します。他のオブジェクトも同様である可能性があるため、許容範囲が高いです。
現在のアルゴは次のようになります (疑似) / 1 つの一致のみを返します (複数一致の場合も同様です - この質問の実際のケースです):
haystack = im.read("stack.bmp")
image = Image.open("im.bmp")
MATCH = []
PIL_rotateImage for 0 to 360: # You get the point..
image = np.array(rotatedImage)
result = cv2.matchTemplate(image, haystack, algorithm) #algorithm: CCOEFF_NORMED
resultMax = result.max()
y,x = np.unravel_index(result.argmax(), result.shape)
MATCH.append([resultMax, (x,y)])
Best_match = sorted(MATCH, key=itemgetter(0))[0]
if Best_match[0] < minval: return False
*.....*
変形 (部分的、および/または回転) されたサブイメージを含むテンプレートがあるとします。これは (人間の目には) まったく同じイメージです。
- オブジェクトを回転させることができます
- オブジェクトは部分的である可能性があります (ただし、許容レベルまで - 例: 60%)
- 色は常に同じではありませんが、似ています。(色を比較するためのアルゴリズムを取得)
- オブジェクトは常にそこにあるとは限りません...
- オブジェクトが少し変形している可能性があります: 一部のピクセルが「配置ミス」している可能性があります
- 何かが忘れられているかもしれませんが、一般的には変形しています。
私もリストを反復しようとしましたが、これは明らかに遅いです。私が行った方法は、最初/最後、または中央のピクセルの一部が同じかどうかを確認するだけでした.. <-もちろん、部分的な検索には機能しません。または回転したオブジェクト。
あなたの理解を助けるために、私の文章を裏付けるための小さな画像(例):ほんの一例です!
Q : これを行う方法に関するヒント、疑似コード、または実際のコードを入手した人はいますか? 私は常に迷子になっているので、何かを始めることができます。