我目前正在使用C ++并编写依赖于OpenCV的程序。我遇到两个嵌套的for循环问题。
float invalue = 0;
float columnvalue = 0;
CvScalar rscal;
printf("%i\n", height);
printf("%i\n", width);
for(int i=0; i < height; i++)
{
columnvalue = 0;
printf("%i\n", i);
for(int j=0; j < width; j++)
{
rscal = cvGet2D(matrix,i,j);
columnvalue += rscal.val[0];
}
printf("%f\n", columnvalue);
holder[i] = columnvalue;
}
我遇到的问题是我似乎没有增加到2.这段代码的输出是:
480
640
0
100
1
113
2
200
然后代码停止运行。我有什么问题吗?
答案 0 :(得分:1)
我不确定你的意图是什么,所以我可能错了,但我认为它应该是float holder[] = new float[width];
。我认为目前您正在尝试访问根本不存在的数组元素,并且您正在更改height
或i
的值。
答案 1 :(得分:0)
我认为该程序终止尝试访问未分配的内存位置holder [i]。您可以通过注释掉
行来验证这一点holder[i] = columnvalue;