任何人都可以告诉我cvmSet在以下代码中实际做了什么。特别是L0[y*5 + x]
这一部分。此外,数组是声明一维数组还是二维数组?我想这是1D阵列。我只是想了解那条特定的路线。任何帮助将不胜感激。
我的意思是如果数组的值计算为L0 [y * 5 + x],那么元素在L0中的作用是什么,那么初始化1D L0的数组元素有什么意义呢?
float L0[]={
-1,-1,-1,-1,-1,
0, 0, 0, 0, 0,
2, 2, 2, 2, 2,
0, 0, 0, 0, 0,
-1,-1,-1,-1,-1 };
CvMat* rgbMat = cvCreateMat(5, 5, CV_32FC1);
for (int y = 0; y < 5; y++)
{
for (int x = 0; x < 5; x++)
cvmSet(rgbMat, y, x, L0[y*5 + x]);
}
答案 0 :(得分:2)
L0被声明为25个元素的1D数组,但它被解释为2D 5x5,实际上很常见。 L0 [y * 5 + x]仅用于此,以获得与2D中的[x,y]对应的数组元素。
答案 1 :(得分:1)
解释了行cvmSet(image,x,y,value)
:
使用值设置图像中的像素x,y。
为数组L0导出值。例如。 for pixel(x,y)=(1,2):
value= L0[y*5 + x] = L0[2*5+1] = L0[11] = 2
。