Ошибка при использовании findContours в opencv - PullRequest
0 голосов
/ 05 мая 2018

Я хотел обработать черно-белое изображение с помощью findContours.

Mat frame= imread(argv[1]);
cvtColor(frame, frame, CV_BGR2GRAY);
threshold(frame,frame, 150, 255, THRESH_BINARY);
vector<vector<Point2f>> contours;
findContours(frame.clone(), contours, noArray(), CV_RETR_EXTERNAL, 
CV_CHAIN_APPROX_SIMPLE , Point(0, 0));

Но я получаю следующее исключение:

Ошибка OpenCV: утверждение не выполнено (mtype == type0 || (((((mtype) & ((512) - 1) << 3)) >> 3) + 1) == ((((type0) & ((512 - 1) << 3)) >> 3) + 1) && ((1 << type0) & fixedDepthMask)! = 0)) создать, файл /home/nvidia/opencv/modules/core/src/matrix.cpp, строка 2578 прекращается вызывается после создания экземпляра cv :: Exception what (): /home/nvidia/opencv/modules/core/src/matrix.cpp:2578: ошибка: (-215) mtype == type0 || (((((mtype) & ((512 - 1) << 3)) >> 3) + 1) == ((((type0) & ((512 - 1) << 3)) >> 3) + 1) && ((1 << type0) & fixedDepthMask)! = 0) в функции create. </p>

Изображение, используемое для поиска контуров:

enter image description here

. Любые указания о том, как решить эту проблему, будут высоко оценены. Спасибо.

1 Ответ

0 голосов
/ 05 мая 2018

Я запустил ваш код и обнаружил проблему. Вы используете cv::Point2f для хранения контуров, в то время как вы должны использовать cv::Point. Просто измените 4-ю строку на:

vector<vector<Point>> contours
...