2012-03-31 56 views
1

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

+0

[This answer](http://stackoverflow.com/a/17621084/1601291)也可能有助于理解元素访问。 – Aurelius 2013-07-12 17:55:25

回答

1

这里我给EXP代码..its可能是有帮助的ü...

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]); 
     } 
    } 
+0

这是工作,但我不明白为什么你用三个scal.val [0],scal.val [1],scal.val [3]);只有scal.val [0]显示输出scal.val [1]和scal.val [2]只是给零!请帮助 – Priyanka 2012-03-31 09:43:31

1

在回答到aranga您的评论,

我没有得到为什么具有u使用了三个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个通道...

+0

非常感谢,很好的解释! – Priyanka 2012-04-02 04:27:40