2017-05-29 113 views
0

我試圖檢測黑桃,俱樂部,鑽石和哈特之間的區別。卡上的號碼是無關緊要的,只是訴訟事宜。使用opencv檢測卡片符號python

我已經嘗試通過查看紅色或黑色的顏色檢測,但仍然留下了每種顏色的兩個結果。我怎麼能確保我可以單獨檢測每個符號?例如:我有一張紅色的牡鹿,紅色的鑽石,黑色的鍬和黑色的俱樂部的照片。我想繪製不同顏色的每個符號的輪廓。

我用我的攝像頭作爲相機。

回答

0

如果你的卡片套裝總是相同的(只有一種卡片),你可以存儲圖像的鏟子,俱樂部,鑽石和哈特,然後檢查給定圖像與你的參考和選擇的互相關最高值(見this question)。如果你有一個相當大的不同類型的卡片樣本集合,其差異很小,你幾乎可以完全遵循this tutorial來對你的訓練集進行四路分類,並使用svm,聚類或其他方法,這些都可以在open-cv中找到。

希望這有助於以及所有最好的

+0

以及我basicly有鹿,鐵鍬,俱樂部和鑽石,我需要能夠indentify,沒有真正的撲克牌的象徵被使用 – FrankK

0

我看不到任何代碼,因此無法真正調整你有什麼,但更普遍的,你應該能夠訓練它一樣的除外符號而不是顏色:

以下是用於製作特定卡片的示例代碼。你可以訓練他們成爲特定的卡片,從而通過特定的卡片捕獲所有的符號,或者將它們備份並且更一般地爲符號(心臟/鑽石)訓練。你也應該看看在opencv上的template matching

有一些指南和code already completed github這個。

Here is a tutorial worth reading

+0

你忘了包含示例代碼來做一個特定的卡,或者它在github頁面上? – FrankK

0

由於卡符號是在固定的位置上,你可以試試下面(例如,在OpenCV 3.2Python):

  1. 作物在左上角的符號,image = image[h1:h2,w1:w2]
  2. 閾值的符號顏色爲黑色,其餘爲白色,thresh = mask = cv2.inRange(image,(0,0,0),(100,100,100))
  3. 執行查找輪廓檢測,_, contours, hierarchy = cv2.findContours()
  4. 獲取輪廓的面積大小。 area = cv2.contourArea(contour)
  5. 比較該區域以確定它所屬的4個符號中的哪一個。

其中您必須爲步驟4比較每個符號的區域閾值。以上所有cv2函數僅供參考。

希望得到這個幫助。

+0

@ user3499284它適合你嗎? – thewaywewere

+0

對於這個遲到的迴應感到抱歉,但是沒有。我需要能夠在不同的距離實時檢測它們,所以contourArea不會爲我工作 – FrankK

+0

@ user3499284我明白了。那麼,你有沒有找到解決方案? – thewaywewere