如何在opencv中访问Cvmat *的元素

时间:2012-03-31 08:47:12

标签: opencv

如何在opencv中打印存储在CVmat *中的数字?
我在访问cvmat的元素时遇到了问题。请提出解决方案!

2 个答案:

答案 0 :(得分:1)

这里我已经给出了exp代码..对你来说可能有帮助...

CvMat mathdr, *mat = cvGetMat( img1, &mathdr );
    CvSize size_im  = cvGetSize(img1);
    unsigned int M = img1->height;
    unsigned int N = img1->width;
    for(i=0;i<M;i++)
    {
        for (j =0;j<N;j++)
        {
            CvScalar scal = cvGet2D(mat,i,j);
            printf("pixel val of the image is:%f %f %f\n",scal.val[0],scal.val[1],scal.val[3]);
        }
    }

答案 1 :(得分:1)

回答你对aranga的评论,

  

我不明白为什么你使用了三个scal.val [0],scal.val [1],scal.val [3]);只有scal.val [0]显示输出scal.val [1]而scal.val [2]只显示零

这取决于您的图像,或者更确切地说取决于图像的数量。普通图像将有3个通道(RGB,虽然它实际上是反向的,所以BGR),你的似乎是灰度,或者在任何情况下只有第一个通道中的值。

我刚检查过,确实如果你执行

    cvtColor(src,dst,CV_RGB2GRAY);

将三通道RGB图像转换为灰度图像,灰度图像只有1个通道。但也许你会知道为什么你的图像只使用1个频道...