理解openCV中的特定行

时间:2013-07-03 09:50:03

标签: c++ opencv image-processing

任何人都可以告诉我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]);
    }

2 个答案:

答案 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