2016-05-18 32 views
0

我正在使用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

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

+0

谢谢!我试图使用侵蚀,这是适当的这个图像与适当的参数。但它会丢失其他斑点的一些前景像素,所以申请这种情况并不是一个好方法。对我有更多的建议吗? 谢谢! – TTGroup