выходные различия при использовании findContours в opencv2 и opencv3

Я использую те же самые шаги, чтобы найти контуры изображения, но я получаю два разных результата в Opencv 2.4.8 и Opencv 3.2! Кто-нибудь знает почему?
Вот процедура:

std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i> hierarchy;

cv::imwrite("binImageInB.jpg", binImageIn);

// find contour of the binary image
cv::findContours( binImageIn, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0) ); // Find the contours in the image   // save

cv::imwrite("binImageIn.jpg", binImageIn);

Исходное изображение:

Входное изображение

Вывод при использовании opencv 2.4.8:

Выход Opencv2

И вывод при использовании Opencv3.2:

введите описание изображения здесь

1

Решение

документация для 2.4.x отмечает:

Замечания: Исходное изображение модифицируется этой функцией.


документация для 3.3.1 отмечает:

Так как исходное изображение opencv 3.2 не модифицируется этой функцией.


В общем, вы используете contours а также hierarchy выходные параметры. Поскольку более поздние версии больше не изменяют входное изображение, я бы посчитал это побочным эффектом, который не должен был быть полезным.

1

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

Других решений пока нет …

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