распознавание четырехугольников в OpenCV

542
04 февраля 2017, 09:16

Работаю над распознаванием фигур в OpenCV. Чтобы найти четырехугольник, смотрю на количество вершин:

while(contours)
{
    result = cvApproxPoly(contours, sizeof(CvContour), storage,
    CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.02, 0);
    if(result->total==3 )
    {   
        CvPoint *pt[4];
        for(int i=0;i<4;i++){
            pt[i] = (CvPoint*)cvGetSeqElem(result, i);
        }
        cvLine(src, *pt[0], *pt[1], cvScalar(0,0,250),4);
        cvLine(src, *pt[1], *pt[2], cvScalar(0,0,250),4);
        cvLine(src, *pt[2], *pt[3], cvScalar(0,0,250),4);
        cvLine(src, *pt[3], *pt[0], cvScalar(0,0,250),4);
    }
    contours = contours->h_next; 
}

Хорошо работает на рисунках, но на реальных фотографиях работает гораздо хуже (использую свертку, но тогда рисунки распознаются хуже). Какие еще способы можно использовать для распознавания четырехугольников? Как можно переделать преобразование Хафа для поиска прямоугольников?

READ ALSO
Можно ли объединить запросы в один

Можно ли объединить запросы в один

Доброе время суток, Можно ли объединить следующие запросы в один запрос?:

425
Фрагменты или списки

Фрагменты или списки

ПриветствуюСоздаю свое первое клиент-серверное приложение, поэтому хочу проконсультироваться с более опытными разработчиками

434
Отправка файла через JSON на Java

Отправка файла через JSON на Java

Пытаюсь в приложении на андроид закодировать фото в base64, чтобы отправить его на серверОднако результаты нулевые

445