IplImage中的奇怪值

时间:2013-03-20 09:40:26

标签: c++ visual-studio-2010 opencv

我有一个IplImage I.它应该有0到255(像素)的值。 不幸的是,我有很奇怪的特殊字符,如:

ØÕÖÕÓÎËÍÌÈÃÃÁ»¶±«¨¤Ÿ™”‰

我做了以下事情: uchar * d_I =(uchar *)I-> imageData;

如何将这些字符转换为0到255之间的值?

3 个答案:

答案 0 :(得分:0)

由于您已经标记了c ++,因此您可以使用cout将char打印为数字。 保留以前的代码。

uchar* d_I = (uchar*) I->imageData;
std::cout <<(int) *d_I;

答案 1 :(得分:0)

你考虑了image-&gt; widthStep吗?像素不仅仅是指向您传递给cvCreateImage的数据类型的指针(或由cvLoadImage加载的数据)然后递增...行对齐为4或8个字节,因此每行不一定在内存中触及(虽然它会在几个字节内接近)。

使用以下方法访问您的像素:
(unsigned char)CV_IMAGE_ELEM(myImage,unsigned char,y,x)

或者如果你开始使用64F深度图像:
(double)CV_IMAGE_ELEM(myImage,double,row,col)

请参阅: How to access the elements of single channel IplImage in Opencv

答案 2 :(得分:-1)

您应该转换为int:

,而不是在uchar中进行转换
int* d_l = (int*)l->imageData