3
我想在Python中創建一個腳本(使用OpenCV庫),該腳本確定圖片中的哪些標記。標記是這個樣子:檢測二維圖像中的標記[Python/OpenCV]
加載圖像後,腳本應該打印的標記是在畫面(返回標記的數字)。例如,如果我負荷這樣的畫面:
對於該圖像的腳本應該返回三個數字:1,2和3。我有一個腳本,該負載圖像和識別數字(圓形,正方形等 - 在下面的腳本中只有正方形)但我沒有任何想法來識別整個標記,它由幾個數字組成。有任何想法嗎?請有關算法或任何解決方案的任何建議。
import numpy as np
import cv2
img = cv2.imread('B.jpg')
gray = cv2.imread('B.jpg',0)
ret,thresh = cv2.threshold(gray,120,255,1)
contours,h = cv2.findContours(thresh,1,2)
for cnt in contours:
approx = cv2.approxPolyDP(cnt,0.01*cv2.arcLength(cnt,True),True)
print len(approx)
if len(approx)==4:
print "square"
cv2.drawContours(img,[cnt],0,(0,0,255))
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
但顯然它不是我所需要的只包圍矩形。 感謝您的任何提示和幫助。
1.找到外輪廓。 2.爲每個輪廓選擇邊界框(由於圖像中的外部輪廓是正方形,應該與輪廓相同)3.調整圖像大小,使其與參考標記尺寸相同。 4.對調整大小的圖像區域和參考標記的Canny邊緣圖像使用倒角匹配。 5.如果一個倒角匹配足夠小,選擇最小的一個作爲檢測標記 – Micka
如果您有額外的透視失真,您必須找到四邊形而不是邊界框並使用透視變形。 – Micka
我可能會嘗試功能匹配,如http://docs.opencv.org/3.1.0/d1/de0/tutorial_py_feature_homography.html#gsc.tab=0所述,但我沒有得到它的工作。也看看這篇文章:http://stackoverflow.com/questions/20259025/module-object-has-no-attribute-drawmatches-opencv-python – tfv