这段代码是什么意思? OpenCV的

时间:2014-03-29 13:23:07

标签: c++ arrays opencv

我可以知道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]; 
}
}

1 个答案:

答案 0 :(得分:1)

简答:

  • x是矩阵df_dx
  • 的第j行第i列的元素
  • df_dx->imageData返回指向数组第一个元素(左上角)的指针

以这种方式访问​​矩阵元素实际上对于存储在内存中的2d矩阵作为平面一维数组非常常见(例如,对于与另一个库的类似示例,请参阅GSL matrix accesses;另请参阅this post一个类似的问题)。

将矩阵存储为数组数组(即使用[][]进行访问)绝对可以管理,很多人选择使用此表示形式,但有reasons为什么人们更喜欢平面布局在记忆中。