私はIplImageIを持っています、そしてそれは0から255(ピクセル)までの値を持つことになっています。残念ながら、次のような奇妙な特殊文字が含まれています。
ØÕÖÕÓÎËÍÌÈÃÃÁ»¶±«¨¤Ÿ™”‰
私は次のことを行いました:uchar * d_I =(uchar *)I-> imageData;
これらの文字を0から255までの値に変換するにはどうすればよいですか?
私はIplImageIを持っています、そしてそれは0から255(ピクセル)までの値を持つことになっています。残念ながら、次のような奇妙な特殊文字が含まれています。
ØÕÖÕÓÎËÍÌÈÃÃÁ»¶±«¨¤Ÿ™”‰
私は次のことを行いました:uchar * d_I =(uchar *)I-> imageData;
これらの文字を0から255までの値に変換するにはどうすればよいですか?
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)
c++ にタグを付けたので、cout を使用して char を数値として出力する方法を次に示します。以前のコードを保持します。
uchar* d_I = (uchar*) I->imageData;
std::cout <<(int) *d_I;
ucharでキャストする代わりに、intにキャストする必要があります。
int* d_l = (int*)l->imageData