如何提取车牌号?

时间:2016-05-18 15:45:28

标签: c++ opencv anpr

我正在使用OpenCV来实施ANPR计划。

我试图提取盘子中的数字。示例代码位于

之下
adaptiveThreshold(src_gray, binary_image, THESHOLD_MAX, ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY_INV, BLOCK_SIZE, MEAN_OFFSET);

CvBlobs blobs;
IplImage binary = binary_image;
IplImage *labelImg = cvCreateImage(cvGetSize(&binary), IPL_DEPTH_LABEL, 1);
unsigned int result = cvLabel(&binary, labelImg, blobs);
cvReleaseImage(&labelImg);
cvFilterByArea(blobs, DETECT_BLOB_AREA_MIN, DETECT_BLOB_AREA_MAX);

使用adaptiveThreshold()和`cvLabel()几乎都可以,但是有些图像给出了adaptiveThreshold()的输出不好,以下是一个例子。

enter image description here

牌中有3个字母(以红色矩形为界)。

有3个字母无法用cvLabel()检测到,因为它们坚持用板绑定。在这种情况下,我的算法无法提取这些字母。

有人告诉我在这种情况下有什么方法可以提取这3个字母吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可能想要使用侵蚀。 侵蚀可以去除图像的某些部分。侵蚀很可能会消除板块和字母之间的连接部分。 http://docs.opencv.org/2.4/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html http://homepages.inf.ed.ac.uk/rbf/HIPR2/erode.htm