如何在opencv中打印存储在CVmat *中的数字?
我在访问cvmat的元素时遇到了问题。请提出解决方案!
答案 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个频道...