opencv структурированное обнаружение границы леса и findcontours
Я пытаюсь использовать OpenCV через Visual C++ для извлечения контуров изображения. Я смог сделать это с помощью учебника opencv для findcontours. findcontours работает в два этапа
- Обнаружьте края, используя хитрый детектор края.
- Поток вывода canny, чтобы найти контуры.
Я хочу попробовать то же самое с " Структурным определением границы леса " (Zitnick et al). Я могу извлечь края и отобразить их, но когда я пытаюсь передать вывод, чтобы найти контуры. Я получаю сообщение об ошибке "cv::Exception at memory location 0x0020EE9C". (см. код ниже). Что я делаю неправильно?
Mat src = imread("image.jpg");
src.convertTo(src, CV_32F, 1.0 / 255.0);
Mat edges(src.size(), src.type());
Ptr<StructuredEdgeDetection> pDollar = createStructuredEdgeDetection("model.yml.gz");
pDollar->detectEdges(src, edges);
findContours(edges, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
1 ответ
pDollar->detectEdges(src, edges);
edges
тип CV_32F. вы должны преобразовать его в 8-битное одноканальное изображение