-
Количество публикаций
6 -
Зарегистрирован
-
Посещение
Все публикации пользователя TotenSie
-
Исходное изображение: Результат программы: Тока чёто буковку У плохо обвел, он ее зачем то разделил на 2 контура =) Если будут какие то замечания, то пишите. #include "stdafx.h" #include <stdio.h> #include "cv.h" #include "highgui.h" int main() { CvMemStorage* image_storage = cvCreateMemStorage(0); CvSeq* image_contours; cvNamedWindow( "Window1", 1 ); IplImage *image = 0; IplImage *clone = cvCreateImage(cvSize(227,42), IPL_DEPTH_8U, 3); image = cvLoadImage( "ex.jpg", 1 ); IplImage *image_gray = cvCreateImage(cvSize(227,42), IPL_DEPTH_8U, 1); cvCvtColor( image, image_gray, CV_BGR2GRAY ); IplImage *image_canny = cvCreateImage(cvSize(227,42), IPL_DEPTH_8U, 1); cvCanny( image_gray, image_canny, 50, 255, 3 ); cvFindContours( image_canny, image_storage, &image_contours, sizeof(CvContour), CV_RETR_TREE); while(image_contours) { cvZero( clone ); cvDrawContours( image, image_contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 0, 0, CV_AA, cvPoint(0,0) ); CvRect rect = cvBoundingRect(image_contours); printf("%d %d %d %d\n", rect.x, rect.y, rect.width, rect.height); if(rect.width > 10 && rect.width < 60 && rect.height > 20 && rect.height < 60) { cvRectangle(image, cvPoint(rect.x, rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(0,255,0), 0); } image_contours = image_contours ->h_next; cvShowImage( "Window1", image ); cvWaitKey(0); } cvDestroyWindow( "Window1" ); cvReleaseImage( &image ); cvReleaseImage( &image_gray ); cvReleaseImage( &image_canny ); cvReleaseImage( &clone ); cvClearMemStorage( image_storage ); return 0; }
-
Дело в том что я хочу применить этот метод для распознавания автомобильного номерного знака. Насколько я помню в номерном знаке могут присутствовать цифры от 0 до 9 и буквы(А, В, Е, К, М, Н, О, Р, С, Т, У, Х). Проблема возникает тут тока с цифрами 6 и 9, 0 и о. Хотелось бы еще узнать, есть ли какие нить другие методы реализации данной задачи с помощью OpenCV и без использования нейронных сетей.
-
Добрый день. В общем прочитал статейку одну про распознавание текста с помощью инвариантных моментов и решил попробовать сделать. Написал прогу, которая должна находить контуры 2 изображений и их моменты, но что то не получается при распознавании. Беру 2 изображения. #include "stdafx.h" #include <stdio.h> #include "cv.h" #include "highgui.h" int main() { CvMemStorage* image_storage = cvCreateMemStorage(0); CvMemStorage* nomer_storage = cvCreateMemStorage(0); CvSeq* nomer_contours; CvSeq* image_contours; IplImage *image = 0; image = cvLoadImage( "ex.jpg", 1 ); IplImage *image_gray = cvCreateImage(cvSize(24,42), IPL_DEPTH_8U, 1); cvCvtColor( image, image_gray, CV_BGR2GRAY ); IplImage *image_canny = cvCreateImage(cvSize(24,42), IPL_DEPTH_8U, 1); cvCanny( image_gray, image_canny, 50, 255, 3 ); IplImage *nomer = 0; nomer = cvLoadImage( "E100EE22.jpg", 1 ); IplImage *nomer_gray = cvCreateImage(cvSize(24,42), IPL_DEPTH_8U, 1); cvCvtColor( nomer, nomer_gray, CV_BGR2GRAY ); IplImage *nomer_canny = cvCreateImage(cvSize(24,42), IPL_DEPTH_8U, 1); cvCanny( nomer_gray, nomer_canny, 50, 255, 3 ); cvFindContours( nomer_canny, image_storage, &nomer_contours, sizeof(CvContour), CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0)); cvFindContours( image_canny, nomer_storage, &image_contours, sizeof(CvContour), CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0)); double match = cvMatchShapes( nomer_contours, image_contours, CV_CONTOURS_MATCH_I3)) cvReleaseImage( &nomer ); cvReleaseImage( &nomer_gray ); cvReleaseImage( &nomer_canny ); cvReleaseImage( &image ); cvReleaseImage( &image_gray ); cvReleaseImage( &image_canny ); cvClearMemStorage( image_storage ); cvClearMemStorage( nomer_storage ); return 0; }
-
Можно ли с помощью каскада Хаара находить автомобильные номера или лутше использовать какой нибудь другой метод?
-
Опишите плз, как сгенерировать на основе одного эталонного объекта заданное количество случаев с помощью createsamples.