Я использую те же самые шаги, чтобы найти контуры изображения, но я получаю два разных результата в 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:
И вывод при использовании Opencv3.2:
документация для 2.4.x отмечает:
Замечания: Исходное изображение модифицируется этой функцией.
документация для 3.3.1 отмечает:
Так как исходное изображение opencv 3.2 не модифицируется этой функцией.
В общем, вы используете contours
а также hierarchy
выходные параметры. Поскольку более поздние версии больше не изменяют входное изображение, я бы посчитал это побочным эффектом, который не должен был быть полезным.
Других решений пока нет …