В соответствии с документацией Shapes ввод может быть либо в виде изображений, либо в виде серого масштаба. Но когда я попробовал два изображения с серой шкалой, я получил ошибку с ошибкой утверждения. При дальнейшем исследовании, я нашел из here, что объект Мат должен быть вектором 1D и типа CV_32FC2 или CV_32SC2.matchShapes, используя полутоновые изображения opencv
Используя this ответ, я преобразовал изображения в векторный массив поплавка после их преобразований в CV_32FC2. Я все еще получаю ошибку утверждения.
Может ли кто-нибудь сказать мне, как я могу сравнить 2 изображения в оттенках серого с помощью matchShapes function?
UPDATE
сообщение об ошибке
OpenCV Error: Assertion failed (contour1.checkVector(2) >= 0 && contour2.checkVector(2) >= 0 && (contour1.depth() == CV_32F || contour1.depth() == CV_32S) && contour1.depth() == contour2.depth()) in matchShapes, file /home/tonystark/Opencv/modules/imgproc/src/contours.cpp, line 1936
terminate called after throwing an instance of 'cv::Exception'
what(): /home/tonystark/Opencv/modules/imgproc/src/contours.cpp:1936: error: (-215) contour1.checkVector(2) >= 0 && contour2.checkVector(2) >= 0 && (contour1.depth() == CV_32F || contour1.depth() == CV_32S) && contour1.depth() == contour2.depth() in function matchShapes
, когда я использовал
pkg-config --modversion opencv
это говорит о версии, 2.4.9
какая версия OpenCV вы используете? Каково сообщение об ошибке утверждения? – alrikai
см правки. @alrikai –