我試圖識別打開的簡歷,但我有一些問題。首先,我想要認識顏色(心,鑽石,黑桃或俱樂部)。我盯着紅色。所以我檢測顏色,並切割鑽石或心臟,並嘗試認識篩選 - 我選擇良好的比賽和匹配的顏色,將有更多的(我敢肯定它的愚蠢,但我沒有任何想法如何做到這一點)。我得到結果就像一個如下:SIFT方法給我不好的結果,識別4個形狀
這是我的匹配函數的代碼:
def match(img, models):
goods = []
for name, value in models:
sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(name, None)
kp2, des2 = sift.detectAndCompute(img, None)
if des1 is None or des2 is None:
continue
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1, des2, k=2)
good = []
if matches is None:
continue
for m, n in matches:
if m.distance < 0.75 * n.distance:
good.append([m])
img3 = cv2.drawMatchesKnn(img, kp1, name, kp2, good, None, flags=2)
plt.imshow(img3), plt.show()
goods.append([len(good), value])
maxi = 0
ret = None
for l, v in goods:
if l > maxi:
maxi = l
ret = v
if maxi < 3:
return 0
return ret
如果您有任何提示,我會很感激。
所以顏色檢測和農作物成功,你只有分類是鑽石還是心臟對不對? – ebeneditos
是的,我只有篩選問題 – heheszki
SIFT沒有在分類形狀上表現出emphsize,它是局部不變的描述符,主要用於分類/匹配給定圖像的特徵,對於形狀檢測,您需要獲取輪廓,然後檢查sape或顏色相關的東西。 –