【发布时间】:2016-01-17 19:19:14
【问题描述】:
我正在尝试检测一个球并为其绘制边界。它显示错误
segmentation fault (core dumped)
错误就在这里,
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
Mat itt = Mat::zeros( imgThresholded.size(), CV_8UC1 );
itt = imgThresholded*255;
Canny( itt ,itt, 10, 30, 3 );
vector<vector<Point> > contours_poly( contours.size() );
vector<Point2f>center( contours.size() );
vector<float>radius( contours.size() );
vector<Rect> boundRect( contours.size() );
imshow("canny", itt);
//CIRCLE HOUGH
//vector<Vec3f> circles;
findContours( itt, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
for( int i = 0; i < contours.size(); i++ )
{
Scalar color = Scalar(255,255,255);
if( contours[i].size() > points )
{approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true );
boundRect[i] = boundingRect( Mat(contours_poly[i]) );
minEnclosingCircle( (Mat)contours_poly[i], center[i], radius[i] );
circle( imgOriginal, center[i], (int)radius[i],color, 2, 8, 0 );
}
}
我不明白哪里有段错误。
【问题讨论】:
-
我无法理解存在段错误的位置。 -- 如果出现问题,您还没有准备好调试您的应用程序吗?哪一行代码会产生分段错误?
-
for条件有问题,评论时没有问题。而且,没有评论它..它可以工作,但是当我把球带到屏幕上时,代码就会退出并显示这个段错误。 IE;如果检测到任何东西,代码就会停止。无法理解问题出在哪里
-
如果
findCountours通过引用获取contours,并且在该函数中,它会删除或添加项目到countours向量,那么您的其他向量没有适当地调整大小。 -
您可能在发行版中使用调试库,反之亦然。或者混合 x86 和 x64 库。或者使用不同编译器编译的库
-
先找到轮廓,然后声明中心、半径等参数。
标签: c++ opencv segmentation-fault contour