【问题标题】:OpenCV Python Car Number Plate DetectionOpenCV Python车牌检测
【发布时间】:2016-04-01 14:06:33
【问题描述】:

我正在使用 HoG 进行车牌检测。我现在处于测试阶段。当我使用

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()

你能告诉我如何正确定位板块吗?

这是结果的快照:

【问题讨论】:

  • 1. 对于该特定汽车,您需要将该图像转换为灰度,应用阈值,并制作与结果相同大小和类型的蒙版图像灰度图像。 2. 对于随机汽车,您需要train a classifier,为此您需要一个尽可能大的图像数据库(您训练分类器越多,您将获得更好的结果)跨度>
  • 我已经训练了分类器。 200 张正面图片和近 400 张负面图片。

标签: python opencv


【解决方案1】:

我认为 Billal 说的是对的,尤其是第一点。在您的情况下,HOG 的检测器大小为 64*64(hog = cv2.HOGDescriptor((64,64), (16,16), (8,8), (8,8), 9))。它只能找到长宽比相同或相近的子图像。您应该在检测器和训练中更改窗口大小。正确的比例应该是 1:4(取决于你的图像)。最近在关注这个,用了上千张图片,但是效果好像也不好,成功率只有50%,也许你应该试试其他描述符。

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多