在 opencv 中使用 findContours 时出错
Error while using findContours in opencv
我想使用 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 Error: Assertion failed (mtype == type0 || (((((mtype) & ((512
- 1) << 3)) >> 3) + 1) == ((((type0) & ((512 - 1) << 3)) >> 3) + 1) && ((1 << type0) & fixedDepthMask) != 0)) in create, file
/home/nvidia/opencv/modules/core/src/matrix.cpp, line 2578 terminate
called after throwing an instance of 'cv::Exception' what():
/home/nvidia/opencv/modules/core/src/matrix.cpp:2578: error: (-215)
mtype == type0 || (((((mtype) & ((512 - 1) << 3)) >> 3) + 1) ==
((((type0) & ((512 - 1) << 3)) >> 3) + 1) && ((1 << type0) &
fixedDepthMask) != 0) in function create.
用于查找轮廓的图像:
。非常感谢任何有关如何解决此问题的指示。
谢谢
我运行你的代码,发现了问题。您正在使用 cv::Point2f
来存储轮廓,而您应该使用 cv::Point
。只需将第 4 行编辑为:
vector<vector<Point>> contours
我想使用 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 Error: Assertion failed (mtype == type0 || (((((mtype) & ((512 - 1) << 3)) >> 3) + 1) == ((((type0) & ((512 - 1) << 3)) >> 3) + 1) && ((1 << type0) & fixedDepthMask) != 0)) in create, file /home/nvidia/opencv/modules/core/src/matrix.cpp, line 2578 terminate called after throwing an instance of 'cv::Exception' what(): /home/nvidia/opencv/modules/core/src/matrix.cpp:2578: error: (-215) mtype == type0 || (((((mtype) & ((512 - 1) << 3)) >> 3) + 1) == ((((type0) & ((512 - 1) << 3)) >> 3) + 1) && ((1 << type0) & fixedDepthMask) != 0) in function create.
用于查找轮廓的图像:
。非常感谢任何有关如何解决此问题的指示。 谢谢
我运行你的代码,发现了问题。您正在使用 cv::Point2f
来存储轮廓,而您应该使用 cv::Point
。只需将第 4 行编辑为:
vector<vector<Point>> contours