2016-05-18 4 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); 

Все почти в порядке с `cvLabel adaptiveThreshold() и(), однако есть некоторые изображения дают вывод из 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

спасибо! Я попытался использовать Erosion, это нормально для этого изображения с соответствующим параметром. Но он потерял некоторые пиксели переднего плана других блоков, поэтому это не очень хороший способ применить этот случай. Что-нибудь еще для меня? Спасибо! – TTGroup

 Смежные вопросы

  • Нет связанных вопросов^_^