opencv структурированное обнаружение границы леса и findcontours

Я пытаюсь использовать OpenCV через Visual C++ для извлечения контуров изображения. Я смог сделать это с помощью учебника opencv для findcontours. findcontours работает в два этапа

  1. Обнаружьте края, используя хитрый детектор края.
  2. Поток вывода 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-битное одноканальное изображение

Другие вопросы по тегам