Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用OpenCV和Python使用haarcascade检测车牌_Python_Opencv_Computer Vision - Fatal编程技术网

用OpenCV和Python使用haarcascade检测车牌

用OpenCV和Python使用haarcascade检测车牌,python,opencv,computer-vision,Python,Opencv,Computer Vision,我正在编写一个代码,借助opencv和Python识别汽车牌照。为此,我使用哈卡斯卡德。我从这里下载了haarcascades(如果您有更好的来源,请告诉我): 这是图像: 当我使用first haarcascade时,它只检测到右边汽车上的车牌*(两次),但它不识别白色汽车上的车牌 当我使用第二个haarcascade时,它会给我一个错误,我不知道这意味着什么以及如何修复它,这就是错误: cascadedetect.cpp:567: error: (-2:Unspecified error

我正在编写一个代码,借助
opencv
Python
识别汽车牌照。为此,我使用哈卡斯卡德。我从这里下载了haarcascades(如果您有更好的来源,请告诉我):

这是图像:

当我使用first 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 cascade,我已经浏览了整个web,但我找不到任何有效的解决方案。

尝试安装不同版本的OpenCV,然后运行它。版本3.4.4适合我。

尝试从创建此文件的源下载XML文件(不要复制并粘贴到新创建的文件中)。然后将其放在原始python文件所在的目录中

例如,当我使用frontalEyes.xml时,它会给出以下错误

Invalid HAAR feature (expected: 'rw.r.x + rw.r.width <= W'), where 
>     'rw.r.x + rw.r.width' is 22
> must be less than or equal to
>     'W' is 16

无效的HAAR功能(应为:'rw.r.x+rw.r.width发生错误的原因是在*.xml权重文件的开头指定了大小。类似于,(在非注释行的最开头)

hw
现在,如果您阅读了错误,那么现在该怎么做是相当直观的,只需将W的值(对于您的情况,因为您得到的是宽度上的错误)更改为32或更高,(我并不真正了解其影响,如果您随机设置高值,性能方面的影响,但它肯定不会给出任何错误,因此最好将其保持在32以下)。
这是一个快速破解,尽管它没有解释为什么在创建*.xml文件的过程中会出现这样的大小差异

您需要替换这一行:
plates\u cascade=cv2.cascade分类器('haarcascade\u license\u plate\u rus\u 16stages.xml')
关于这一点:
plat_detector=cv2.CascadeClassifier(cv2.data.haarcascades+“haarcascade_-russian_-plate_-number.xml”)
转到haar casecade.xml文件并更改大小值

<size> H W </size>
hw

仅将
opencv版本更改为任何旧版本。它将起作用。

该数据集用于检测俄罗斯登记板。您知道这些是否(准确地)起作用吗非俄罗斯注册车牌?我不认为这是明确/安全的假设。我不知道为什么不起作用,它们看起来和其他车牌一样。你知道我在哪里可以下载其他车牌的haarcascade?有欧洲、美国或联合车牌吗?训练你自己的车牌你能告诉我怎么做吗?@Mika你能告诉我怎么做吗ain/制作我自己的haar cascade?你怎么能在不知道OP使用的是什么版本的情况下提供这样的答案?你是否使用了一些
opencv
版本复制OP的代码,并使其正确?如果是,请提供证据。
<size> H W </size>
<size> H W </size>