findcontours opencv中的分段错误

时间:2016-01-17 19:19:14

标签: c++ opencv segmentation-fault contour

我正在尝试检测球并为其绘制边界。它显示错误

def findWholeWord(w1,w2):
    return re.compile(r'\b{0}(?:\W+\w+){{0,10}}\W+{1}\b|\b{1}(?:\W+\w+){{0,10}}\W+{0}\b'.format(w1,w2), flags=re.IGNORECASE).search

错误就在这里,

segmentation fault (core dumped)

我无法理解哪里有段错误。

2 个答案:

答案 0 :(得分:2)

在findContours之后声明其他向量,如下所示。如需进一步参考,请参阅here。希望这能解决你的错误。我遇到了同样的错误,并在我提到的链接中得到了解决方案。

findContours( itt, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
vector<vector<Point> > contours_poly( contours.size() );
vector<Point2f>center( contours.size() );
vector<float>radius( contours.size() );
vector<Rect> boundRect( contours.size() );

答案 1 :(得分:1)

你先做 vector boundRect(contours.size()); 在这里,轮廓仍然是空的。 然后调用findContours,它计算并设置轮廓的大小, 然后你尝试直接将它写入boundRect [i]。

只需调用boundRect.push_back(boundingRect(Mat(contours_poly [i])));相反,那你应该没事。

如果你正在做原型代码,通常更好的调试使用boundRect.at(i)= ...,因为这会给你一个可理解的错误,例如&#34;超出范围&#34;。 / p>