我試圖檢測黑桃,俱樂部,鑽石和哈特之間的區別。卡上的號碼是無關緊要的,只是訴訟事宜。使用opencv檢測卡片符號python
我已經嘗試通過查看紅色或黑色的顏色檢測,但仍然留下了每種顏色的兩個結果。我怎麼能確保我可以單獨檢測每個符號?例如:我有一張紅色的牡鹿,紅色的鑽石,黑色的鍬和黑色的俱樂部的照片。我想繪製不同顏色的每個符號的輪廓。
我用我的攝像頭作爲相機。
我試圖檢測黑桃,俱樂部,鑽石和哈特之間的區別。卡上的號碼是無關緊要的,只是訴訟事宜。使用opencv檢測卡片符號python
我已經嘗試通過查看紅色或黑色的顏色檢測,但仍然留下了每種顏色的兩個結果。我怎麼能確保我可以單獨檢測每個符號?例如:我有一張紅色的牡鹿,紅色的鑽石,黑色的鍬和黑色的俱樂部的照片。我想繪製不同顏色的每個符號的輪廓。
我用我的攝像頭作爲相機。
如果你的卡片套裝總是相同的(只有一種卡片),你可以存儲圖像的鏟子,俱樂部,鑽石和哈特,然後檢查給定圖像與你的參考和選擇的互相關最高值(見this question)。如果你有一個相當大的不同類型的卡片樣本集合,其差異很小,你幾乎可以完全遵循this tutorial來對你的訓練集進行四路分類,並使用svm,聚類或其他方法,這些都可以在open-cv中找到。
希望這有助於以及所有最好的
我看不到任何代碼,因此無法真正調整你有什麼,但更普遍的,你應該能夠訓練它一樣的除外符號而不是顏色:
以下是用於製作特定卡片的示例代碼。你可以訓練他們成爲特定的卡片,從而通過特定的卡片捕獲所有的符號,或者將它們備份並且更一般地爲符號(心臟/鑽石)訓練。你也應該看看在opencv上的template matching。
有一些指南和code already completed github這個。
你忘了包含示例代碼來做一個特定的卡,或者它在github頁面上? – FrankK
由於卡符號是在固定的位置上,你可以試試下面(例如,在OpenCV 3.2
Python
):
image = image[h1:h2,w1:w2]
thresh = mask = cv2.inRange(image,(0,0,0),(100,100,100))
_, contours, hierarchy = cv2.findContours()
area = cv2.contourArea(contour)
其中您必須爲步驟4比較每個符號的區域閾值。以上所有cv2
函數僅供參考。
希望得到這個幫助。
@ user3499284它適合你嗎? – thewaywewere
對於這個遲到的迴應感到抱歉,但是沒有。我需要能夠在不同的距離實時檢測它們,所以contourArea不會爲我工作 – FrankK
@ user3499284我明白了。那麼,你有沒有找到解決方案? – thewaywewere
除非你有重大的透視失真(當它可能工作),template matching是非常有效的。你可以分別在紅色和黑色通道中運行它(顯然不要找紅色的黑桃等)。
看看例如(不是我)
http://www.pyimagesearch.com/2015/01/26/multi-scale-template-matching-using-python-opencv
打牌,看也https://github.com/arnabdotorg/Playing-Card-Recognition
以及我basicly有鹿,鐵鍬,俱樂部和鑽石,我需要能夠indentify,沒有真正的撲克牌的象徵被使用 – FrankK