2016-04-01 153 views
2

我正在使用HoG牌照檢測。我現在正處於測試階段。當我用OpenCV Python車牌號碼檢測

hog.detectmultiscale() 

來定位號牌,我只得到一個矩形的假陽性本地化。另外,上述功能還會爲我測試的所有圖像返回相同的一組點。這些點數總是我用來計算HoG特徵的winstride的倍數。

下面是代碼:

hog = cv2.HOGDescriptor((64,64), (16,16), (8,8), (8,8), 9) 
svm = cv2.SVM() 
svm.load('trained.xml') 
img = cv2.imread('6.png', cv2.IMREAD_COLOR) 
h = hog.compute(img) 
p = svm.predict(h) 
print p 

model = pickle.load(open("svm.pickle")) 
hog.setSVMDetector(np.array(model)) 
rects, weights= hog.detectMultiScale(img, 1.5, (7,7),(10,10), 1,1) 

for (x, y, w, h) in rects: 
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) 
    print x,y,w,h 

cv2.imshow('plate', img) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

能否請你告訴我如何正確定位板?

下面是結果的快照:

enter image description here

+0

任何隨機車。 –

+0

** 1。**對於特定的汽車,您需要將該圖像轉換爲灰度圖,應用閾值,並製作與所得灰度圖像尺寸和類型相同大小和類型的蒙板圖像。 ** 2。**對於隨機車,您需要[訓練分類器](http://docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html),您將需要一個數據庫儘可能大的圖像(你越訓練分類器,你會得到更好的結果) –

+0

我已經訓練了分類器。 200張正面照片,以及近400張負面照片。 –

回答

0

我想Billal談到是正確的,espeaically第一點。在你的情況下,HOG的檢測器大小是64 * 64(hog = cv2.HOGDescriptor((64,64),(16,16),(8,8),(8,8),9))。它只能找到相同或近似長寬比的子圖像。您應該在探測器和訓練中更改窗口大小。正確的比例應該是1:4(取決於你的圖像)。我最近專注於此,我使用了數千張圖片,但看起來效果並不好,只有50%的成功率,也許您應該嘗試使用其他描述符。