我有一个IplImage I.它应该有0到255(像素)的值。 不幸的是,我有很奇怪的特殊字符,如:
ØÕÖÕÓÎËÍÌÈÃÃÁ»¶±«¨¤Ÿ™”‰
我做了以下事情: uchar * d_I =(uchar *)I-> imageData;
如何将这些字符转换为0到255之间的值?
答案 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