OpenCV findContours получить неправильный результат в конкретном проекте

Я использовал пример кода OpenCV findContours чтобы получить контуры.

Успешно получить правильные контуры для это изображение.

Но когда я использую findContours в своем проекте, он получил неправильные данные контуров, например, контур имеет 0 точек, миллионы точек в векторе контуров, а некоторые точки огромны.

Проверенный код в моем списке проектов ниже:

Mat src=imread("data/artists-icon.png",1);
Mat src_gray = Mat::zeros(src.size(), CV_8UC3);
cvtColor(src, src_gray, CV_BGR2GRAY);

imshow("src_gray", src_gray);

Canny(src_gray, src_gray, 100, 200, 3);
imshow("src_gray2", src_gray);

vector<vector<Point> > contours;
vector<Vec4i> hierarchy;

waitKey(0);
findContours(src_gray, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
cout << "contour size: " << contours.size() << endl;

это изображение данных контуров ошибок

А также этот это правильные данные контуров.

Я воссоздал свой проект, но проблема все еще возникла.

Как я могу решить эту проблему?

Обновить:

Это также неправильно, когда я меняю путь «/» на «\» и создаю CV_RGB2GRAY вместо CV_BGR2GRAY.

Изображение серого и хитрый список вывода ниже.

Orginal: i.imgur.com/KXB6OAS.png

Серый: i.imgur.com/y1prHnj.png

Canny Output: i.imgur.com/UtUzRkh.png

Для сравнения: i.imgur.com/lLZ8OBj.jpg

Я использую библиотеку в своем проекте: FLTK, openGL (freeglut 、 glew), LinearSystemLib 2005, opencv211 с gpu из моего скомпилированного.
Пример кода openconv для findcontours собран из той же библиотеки opencv из моего проекта.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]