1

引き分けではありません。Opencv 3.0、完全に更新された Ubuntu。コードは実行されますが、一致するものは表示されません。テスト領域は、一致するように画像から直接切り取られ、コピーされます。

import numpy as np
import cv2

cv2.ocl.setUseOpenCL(False)


img1 = cv2.imread('images/ingrassroi.png',0)
img2 = cv2.imread('images/ingrass.png',0)

img3 = img1.copy()

# Initiate ORB detector
orb = cv2.ORB_create()

# compute the descriptors with ORB
kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)

# create BFMatcher object
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)

# Match descriptors.
matches = bf.match(des1,des2)

# Sort them in the order of their distance.
matches = sorted(matches, key = lambda x:x.distance)

# Draw first 10 matches.
img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10],None, flags=2)

cv2.imshow("Matches",img3)
cv2.waitKey(-1)

合わせる絵

テスト画像

マッチ

4

1 に答える 1

0

一致する画像が小さすぎることがわかりました。列車の画像に重要なポイントが見つかりませんでした。テスト画像から切り取った領域を拡大したところ、一致が見つかり、画像内のたばこの吸い殻が正しく識別されました。参考までに、OpenCV Python チュートリアルの同じページで FLANN ベースのマッチャーを試すことにした場合は、必ず FLANN_INDEX_LSH = 6 を定義してください。

于 2016-06-13T01:07:44.693 に答える