2013-05-20 2 views
1

Я пытаюсь распознать стоянку с помощью JavaCVКак распознать автостоянку с использованием OpenCV/JavaCV?

У меня есть изображение, как это (с углом):

Original Image

И я хотел бы, чтобы программное обеспечение, чтобы иметь возможность распознавать места и выделяется, не получив координаты, как это (извините за плохой фотошопе):

Output Image

Мой код до сих пор:

imgOriginal = cvLoadImage("D:\\imagem\\original2.JPG"); 

imgModify = cvCreateImage(cvGetSize(imgOriginal), IPL_DEPTH_8U, 1); 
imgOut = cvCloneImage(imgOriginal); 

cvSmooth(imgOut, imgOut, CV_GAUSSIAN, 3); 
    cvCvtColor(imgOut, imgModify, CV_BGR2GRAY); 
    cvThreshold(imgModify, imgModify, 0, 255, CV_THRESH_BINARY + CV_THRESH_OTSU); 
    cvErode(imgModify, imgModify, null, 1); 

    CvMemStorage storage = cvCreateMemStorage(0); 
    CvSeq cvSeq = cvCreateSeq(0, Loader.sizeof(CvContour.class), Loader.sizeof(CvSeq.class), storage); 
    cvFindContours(imgModificada, storage, cvSeq, Loader.sizeof(CvContour.class), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); 

    int objects = 0; 
    CvRect region; 
    for (; cvSeq != null; cvSeq = cvSeq.h_next()) { 
     double areaObject = Math.abs(cvContourArea(cvSeq, CV_WHOLE_SEQ, 0)); 
     if (areaObject > 500) { //ignore small contours 
      objects++; 

      region = cvBoundingRect(cvSeq, 0); 
      cvRectangle(imgOut, cvPoint(region.x(), region.y()), cvPoint(region.x() + region.width(), region.y() + region.height()), CvScalar.BLUE, 1, CV_AA, 0); 


     } 
    } 
System.out.println(objects); 
cvShowImage("Out", imgOut); 
cvWaitKey(0); 
cvReleaseImage(imgOut); 

Как я могу сделать выходное изображение? Кто-нибудь знает? Благодарю.

ответ

1

Если применить Габор фильтр:

http://en.wikipedia.org/wiki/Gabor_filter

http://mplab.ucsd.edu/tutorials/gabor.pdf

вместо гауссовой, вы можете применять различные углы и найти лучший результат согласования от величины ответа. Таким образом, угол фильтра gabor, который дает вам лучший результат, - это то, что вам нужно. Вы можете использовать этот угол для рисования прямоугольника. Для нахождения угловых точек автостоянки вы можете применить базовый метод «Подключенный компонентный ярлык».

Если ваша система в реальном времени и время отклика для вас важно. Вам нужно найти градиент изображения, применяя один из методов обнаружения края, например «Canny»

+0

Я думаю, это может помочь немного –

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

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