-3

我目前正在使用 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

然后代码停止运行。任何线索我做错了什么?

4

2 回答 2

1

我不确定你的意图是什么,所以我可能错了,但我认为应该是float holder[] = new float[width];。我认为目前您正在尝试访问根本不存在的数组元素,并且您正在更改heightor的值i

于 2013-06-10T23:17:48.620 回答
0

我认为程序终止尝试访问未分配的内存位置 holder[i]。您可以通过注释掉该行来验证这一点

holder[i] = columnvalue; 
于 2013-06-11T04:46:25.093 回答