我可以知道x代表什么? ()内的内容是否代表指针?那么[]是数组的元素吗?
x = (df_dx->imageData+i*df_dx->widthStep)[j];
如果我这样说,为什么它不起作用?
x=df_dx[2][j];
->imageData
给出图像的像素值?完整代码如下。感谢
float x;
IplImage*df_dx = cvCreateImage(cvGetSize(grayimg),IPL_DEPTH_16S,1);
for(int i=0;i=grayimg->height;i++)
{
for(int j=0;grayimg->width;j++)
{
x = (df_dx->imageData+i*df_dx->widthStep)[j];
}
}
答案 0 :(得分:1)
简答:
x
是矩阵df_dx
df_dx->imageData
返回指向数组第一个元素(左上角)的指针以这种方式访问矩阵元素实际上对于存储在内存中的2d矩阵作为平面一维数组非常常见(例如,对于与另一个库的类似示例,请参阅GSL matrix accesses;另请参阅this post一个类似的问题)。
将矩阵存储为数组数组(即使用[][]
进行访问)绝对可以管理,很多人选择使用此表示形式,但有reasons为什么人们更喜欢平面布局在记忆中。