我想使用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错误:断言失败(mtype == type0 ||(((((mtype)&amp;((512) - 1)&lt;&lt; 3))&gt;&gt; 3)+ 1)==((((type0)&amp;((512-1)&lt;&lt;&lt; 3))&gt;&gt; 3)+ 1)&amp;&amp; ((1&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&typex)&amp; fixedDepthMask)!= 0))在create,file中 /home/nvidia/opencv/modules/core/src/matrix.cpp,第2578行终止 抛出&#39; cv :: Exception&#39;的实例后调用什么(): /home/nvidia/opencv/modules/core/src/matrix.cpp:2578:错误:( - 215) mtype == type0 || (((((mtype)&amp;((512-1)&lt;&lt; 3))&gt;&gt; 3)+ 1)== ((((type0)&amp;((512-1)&lt;&lt; 3))&gt;&gt; 3)+ 1)&amp;&amp; ((1 <&lt; type0)&amp; fixedDepthMask)!= 0)in function create。
用于findContours的图片:
。高度赞赏如何解决这个问题的任何指示。 感谢。
答案 0 :(得分:1)
我运行了你的代码并发现了问题。您正在使用cv::Point2f
来存储轮廓,而您应该使用cv::Point
。只需编辑第4行即可:
vector<vector<Point>> contours