【发布时间】:2020-03-01 18:13:53
【问题描述】:
我正在编写一个代码,它可以在 opencv 和 Python 的帮助下识别汽车上的车牌。为此,我使用 haarcascades。我从这里下载了 haarcascades(如果你有更好的来源,请告诉我):
https://github.com/opencv/opencv/tree/master/data/haarcascades
这是图片:
当我使用第一个 haarcascade 时,它只检测到右车上的车牌*(两次),但它不识别白车上的车牌。
当我工作第二个 haarcascade 时,它给了我一个错误,我不知道它是什么意思以及如何解决它,这是错误:
cascadedetect.cpp:567: error: (-2:Unspecified error) in function 'bool __thiscall cv::HaarEvaluator::Feature::read(const class cv::FileNode &,const class cv::Size_<int> &)'
> Invalid HAAR feature (expected: 'rw.r.x < W'), where
> 'rw.r.x' is 32
> must be less than
> 'W' is 16
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\nenad\OneDrive\Desktop\open cv slika\Tablice\tablica.py", line 14, in <module>
plates_cascade = cv2.CascadeClassifier('haarcascade_licence_plate_rus_16stages.xml')
SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set
我不认为问题是因为这些 haar 级联有俄罗斯车牌,我在网上看过所有俄罗斯车牌,俄罗斯车牌看起来与其他车牌相似。 这是我写的代码:
# Standard imports
import cv2
import numpy as np
# Read image
img = cv2.imread("slika2.jpg", 1)
gray = cv2.cvtColor(img, 0)
cv2.imshow('img', gray)
cv2.waitKey(0)
#read haarcascade
#plates_cascade = cv2.CascadeClassifier('haarcascade_russian_plate_number.xml') #does not give me error, but result is not correct
plates_cascade = cv2.CascadeClassifier('haarcascade_licence_plate_rus_16stages.xml') #gives me error
plates = plates_cascade.detectMultiScale(gray, 1.2, 4)
for (x,y,w,h) in plates:
#detect plate with rectangle
#rec. start point (x,y), rec. end point (x+w, y+h), blue color(255,0,0), line width 1
plates_rec = cv2.rectangle(img, (x,y), (x+w, y+h), (0,255,0), 1)
#cv2.putText(plates_rec, 'Text', (x, y-3), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 1)
gray_plates = gray[y:y+h, x:x+w]
color_plates = img[y:y+h, x:x+w]
#cv2.imshow('img', gray_plates)
#cv2.waitKey(0)
height, width, chanel = gray_plates.shape
print(height, width)
cv2.imshow('img', img)
cv2.waitKey(0)
print('Number of detected licence plates:', len(plates))
有什么建议可以改进我的代码并解决这个问题吗? 另外,如果您能告诉我如何创建自己的 haar 级联,我已经查看了整个网络,但找不到任何可行的解决方案。
【问题讨论】:
-
该数据集用于检测 russian 注册板。你知道这些是否已知(准确地)与非俄罗斯登记牌一起工作?我认为假设他们会这样做是不明确/安全的。
-
我不知道为什么不起作用,它们看起来和其他人一样。你知道我在哪里可以下载其他板块的 haarcascade 吗?有欧洲的、美国的还是合并的?
-
训练自己的
-
你能告诉我怎么做吗?
-
@Micka 你能告诉我如何训练/制作我自己的 haar 级联吗?
标签: python opencv computer-vision