ここに私が見つけたリンクがあります How do I find an image contained within an image画像との完璧なマッチング方法は?
そして私は上記のリンクのコードを取得します。ここで
は、これは私が大きな画像で検索するが、大きな画像が小さい画像が含まれていない小さなPICである私のコード
import re
import os
import time
import cv2
from cv2 import cv
METHOD = cv.CV_TM_SQDIFF_NORMED
ROOTDIR = 'GeneralIMG/'
# Load The Deck Img
LARGE_IMAGE = cv2.imread('deck.bmp')
for subdir, dirs, files in os.walk(ROOTDIR):
for myfile in files:
filepath = os.path.join(subdir, myfile)
# Read the images from the file
# small_image = cv2.imread(myfile)
# small_image = cv2.imread('GeneralIMG/cfrB.bmp')
Ffile = subdir + myfile
small_image = cv2.imread(Ffile)
result = cv2.matchTemplate(small_image, LARGE_IMAGE, METHOD)
# We want the minimum squared difference
mn,_,mnLoc,_ = cv2.minMaxLoc(result)
MPx,MPy = mnLoc
if MPx == 0 and MPy == 0:
print 'Match failure!'
else:
print MPx, MPy
print re.sub(r"B|D", "", os.path.splitext(myfile)[0])
# Draw the rectangle:
# Extract the coordinates of our best match
MPx,MPy = mnLoc
# Step 2: Get the size of the template. This is the same size as the match.
trows,tcols = small_image.shape[:2]
# Step 3: Draw the rectangle on LARGE_IMAGE
cv2.rectangle(LARGE_IMAGE, (MPx,MPy),(MPx+tcols,MPy+trows),(0,0,255),2)
# Display the original image with the rectangle around the match.
cv2.imshow('output',LARGE_IMAGE)
# The image is only displayed if we call this
cv2.waitKey(0)
# time.sleep(5)
です。私の驚いたことに、matchTemplateはまだ結果を得ています。私が手
12~07_00-03-03.bmp http://7xpvdr.com1.z0.glb.clouddn.com/12~07_00-03-03.bmp
しかし、試合結果は以下のPICのような十分に正確ではありません。 の赤い矩形が一致します。ここで
12~07_00-01-58.bmp http://7xpvdr.com1.z0.glb.clouddn.com/12~07_00-01-58.bmp
私は大きなものではまったく同じ写真を見つけたいです。含まれていない場合は、偽を返すだけで大丈夫です。私はあいまい検索をしたくないのですが、どうすればいいですか?
これは小さいIMGある---更新---:
これは、元の大きなBMP画像
が画像である場合でありますアップロードされたフォーマットは変更されます。小さいimgはpngファイルで、大きい方はbmpです。
ここで、マッチテンプレートがファジー検索を使用しているかどうかは疑問です。だから私が間違った検索結果を得た理由はここで妥当と思われる。私は正確に検索を行う方法を知りたい。 THX〜
更新:
私は[matchtemplate]
のドキュメントをチェックして、私はそれが最良の一致検索ではない完璧にマッチされることを意味し、これを見つけます。
どうすれば完璧にマッチさせることができますか?
テンプレートマッチングとは何ですか? テンプレートマッチングは、テンプレート画像(パッチ)と一致する(類似する)画像の領域を見つける技術です。
最終的な画像に正確なサブ画像があるとは思わない - 投稿する前にファイルをJPEG形式で保存したり、別の形式で保存している可能性があります。実際に赤色ボックス。 JPEGファイルは正確ではないことを覚えておいてください。JPEGファイルを開いて再保存するだけで、元のファイルの完全なコピーではなくなる可能性があります。あなたは大きなイメージのオリジナル**を手に入れましたか? –
@ MarkSetchell結果は、サブ画像が見つかったことを示し、大きな画像の中の正確な座標が示されます。正確な検索ではなく、matchtemplateでファジー検索を使用しているのでしょうか。 – Lee