0

私はIplImageIを持っています、そしてそれは0から255(ピクセル)までの値を持つことになっています。残念ながら、次のような奇妙な特殊文字が含まれています。

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

私は次のことを行いました:uchar * d_I =(uchar *)I-> imageData;

これらの文字を0から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

ucharでキャストする代わりに、intにキャストする必要があります。

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