0

I do have an IplImage I. and it's supposed to have values from 0 to 255 (pixels). I'm having in it unfortunately weird special characters like:

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

I did the following: uchar* d_I = (uchar*) I->imageData;

How can I convert those characters into values from 0 to 255 ?

4

3 回答 3

0

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

访问您的像素:
(unsigned char)CV_IMAGE_ELEM(myImage, unsigned char, y, x)

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

参见: 如何在 Opencv 中访问单通道 IplImage 的元素

于 2013-04-17T22:50:12.403 回答
0

既然您已经标记了 c++,那么您可以使用 cout 将 char 打印为数字。保留您以前的代码。

uchar* d_I = (uchar*) I->imageData;
std::cout <<(int) *d_I;
于 2013-03-20T12:06:12.610 回答
-1

您应该转换为 int,而不是转换为 uchar:

int* d_l = (int*)l->imageData
于 2013-03-20T09:52:23.807 回答