>我可以知道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];
}
}
简短的回答:
-
x
是矩阵第 i 列第 j 行上的元素df_dx
-
df_dx->imageData
返回指向数组第一个元素的指针(左上角)
以这种方式访问矩阵元素实际上对于作为平面一维数组存储在内存中的 2d 矩阵来说是很常见的(例如,参见 GSL 矩阵访问以获取另一个库的类似示例;有关类似问题,另请参阅这篇文章)。
将矩阵存储为数组数组(即使用 [][]
进行访问)绝对是可管理的,许多人选择使用这种表示形式,但人们更喜欢内存中的平面布局是有原因的。