OpenCV最小外包圆检测的时候一直报错vector 下标超出范围

qq_35552101 2018-02-22 12:22:40
//定义轮廓和层次结构
vector<vector<Point>>contours;
vector<Vec4i>hierarchy;
vector<Point2f> center(contours.size());
vector<float> radius(contours.size());

vector<vector<Point>>contours_ploy(contours.size());
//vector<Vec4i>hierarchy;

//查找轮廓
findContours(dst2, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);

int num = contours.size();

for (size_t i = 0; i < contours.size(); i++)
{
approxPolyDP(Mat(contours[i]), contours_ploy[i], 3, true);
minEnclosingCircle(contours[i], center[i], radius[i]);
}
for (size_t t = 0; t < contours.size(); t++)
{
circle(src, center[t], radius[t], Scalar(255), 2, 8, LINE_AA);
}
...全文
706 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-02-26
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
red-fly 2018-02-26
  • 打赏
  • 举报
回复
首先应该说明是哪一行崩溃了,还有崩溃时的一些信息,比如第几次循环,vector实际有几个元素等等。 其二vector变量定义时,不加数量试试
qq_35552101 2018-02-22
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
设置断点, 单步调试运行看看具体哪一步上报错?
approxPolyDP(Mat(contours[i]), contours_ploy[i], 3, true);注释以后就没问题了,应该是contours[i]这个点的类出问题了,但是检查了好几遍,没发现毛病
qq_35552101 2018-02-22
  • 打赏
  • 举报
回复
qq_35552101 2018-02-22
  • 打赏
  • 举报
回复
approxPolyDP(Mat(contours[i]), contours_ploy[i], 3, true);注释以后就没问题了,应该是contours[i]这个点的类出问题了,但是检查了好几遍,没发现毛病
zgl7903 2018-02-22
  • 打赏
  • 举报
回复
设置断点, 单步调试运行看看具体哪一步上报错?
Eleven 2018-02-22
  • 打赏
  • 举报
回复
引用 4 楼 qq_35552101 的回复:
[quote=引用 1 楼 zgl7903 的回复:] 设置断点, 单步调试运行看看具体哪一步上报错?
approxPolyDP(Mat(contours[i]), contours_ploy[i], 3, true);注释以后就没问题了,应该是contours[i]这个点的类出问题了,但是检查了好几遍,没发现毛病[/quote] 你的countours.push_back()类似的操作吗?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧