Перейти к содержимому
Compvision.ru

TotenSie

Пользователи
  • Количество публикаций

    6
  • Зарегистрирован

  • Посещение

Все публикации пользователя TotenSie

  1. Работа с контурами

    Исходное изображение: Результат программы: Тока чёто буковку У плохо обвел, он ее зачем то разделил на 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; }
  2. Дело в том что я хочу применить этот метод для распознавания автомобильного номерного знака. Насколько я помню в номерном знаке могут присутствовать цифры от 0 до 9 и буквы(А, В, Е, К, М, Н, О, Р, С, Т, У, Х). Проблема возникает тут тока с цифрами 6 и 9, 0 и о. Хотелось бы еще узнать, есть ли какие нить другие методы реализации данной задачи с помощью OpenCV и без использования нейронных сетей.
  3. Добрый день. В общем прочитал статейку одну про распознавание текста с помощью инвариантных моментов и решил попробовать сделать. Написал прогу, которая должна находить контуры 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; }
  4. Тренировка каскадов Хаара

    Можно ли с помощью каскада Хаара находить автомобильные номера или лутше использовать какой нибудь другой метод?
  5. Тренировка каскадов Хаара

    Спасибки
  6. Тренировка каскадов Хаара

    Опишите плз, как сгенерировать на основе одного эталонного объекта заданное количество случаев с помощью createsamples.
×