Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 开cv查找凸壳_C++_Opencv - Fatal编程技术网

C++ 开cv查找凸壳

C++ 开cv查找凸壳,c++,opencv,C++,Opencv,OpenCV中的以下代码用于检测黄色球体并绘制其凸面外壳。该代码虽然没有给出任何编译错误,但在输出窗口中给出了以下错误。 我使用最大面积函数来避免较小的不需要的轮廓。 错误是 断言失败(maxarea) { 最大面积=a; lrgctridx=i; } } //凸面外壳 向量壳(Contours.size()); 对于(int i=0;i

OpenCV中的以下代码用于检测黄色球体并绘制其凸面外壳。该代码虽然没有给出任何编译错误,但在输出窗口中给出了以下错误。 我使用最大面积函数来避免较小的不需要的轮廓。 错误是

断言失败(maxarea) { 最大面积=a; lrgctridx=i; } } //凸面外壳 向量壳(Contours.size()); 对于(int i=0;i
任何帮助都将不胜感激。提前感谢

您应该在每次迭代时重置
lrgctridx

假设您在时间“t”找到一个countour,并将
lrgctridx设置为1。在时间“t+1”时,您找不到任何轮廓,因此
轮廓
船体
大小将为
0
,但您正在尝试访问位置1

只需将
lrgctridx=0
放在
for
循环之前。同样适用于
maxarea

lrgctridx = 0;
maxarea = 0;
for (int i = 0; i < Contours.size(); i++)
{
....

时间=t+1假设没有等高线。lrgctrdx的值为0,它不会仍然绘制等高线。如果我更正了,唯一阻止它的就是面积=零分?如果我删除了那行代码,代码似乎可以正常工作understand@SridharThiagarajan是的,您还应该与lrgctridx一起重置
maxarea=0
,这样您就不会调用drawContours。或者只要
if(!courts.empty()){drawcourts…
@SridharThiagarajan很高兴它能帮上忙。一般来说,总是初始化变量并进行检查以防止出现极限情况。酷..如果我删除区域,代码也会起同样的作用!=0条件..为什么呢???@SridharThiagarajan我想如果
hull
为空,你就不会画任何东西了
lrgctridx = 0;
maxarea = 0;
for (int i = 0; i < Contours.size(); i++)
{
....
if(!Contours.empty()) {
    drawContours(...);
    ....