アプリ版:「スタンプのみでお礼する」機能のリリースについて

OpenCVのIplImageという構造体は
http://hp.vector.co.jp/authors/VA025246/opencv/0 …
のようになっているようなのですが,

画像をキャプチャした際に、「画素のdepthが 8(bit)でチャンネル数3(RGB)のとき」、

char *imageData

から、一直線の配列として画像がRGBRGBRGB・・・という風に並んでいて、それぞれの大きさがcharだというのはわかりました。
そこで、imageDataのポインタを進めていって(+1したり+2したりすることで)画像データを読み込んでいます

しかし、「depthが32(bit)でチャンネル数1(グレイ画像)のとき」、同じように辿っても、正しいデータが得られませんでした(0.00000という画素値やありえないぐらい大きい値)。

型がcharなので、そこがおかしいのかと思いますが、

char型から始まる画像データなのに、double型(32bit)をどうやっていれてあるのか見当もつきませんし、どうやって32bitずつポインタを進めていくのかもわかりません。
そもそも、ここに本当にデータが入ってるのか・・・(汗

OpenCV経験者の方は少数だと思いますが、画像処理経験者の方など、何か思いつくところがある方、ぜひとも意見をお願いしますm(_ _"m)ペコリ

A 回答 (1件)

どもです。


http://www.cs.bham.ac.uk/resources/courses/robot …
が参考になると思います。

ちょっと試してみようかと思ったのですが、そもそもdepthが32(bit)でチャンネル数1(グレイ画像)の画像を作れませんでした。笑
    • good
    • 0
この回答へのお礼

ありがとうございます、解決しましたm(_ _"m)ペコリ

物凄く初歩的なことだったんですが、

よくよく考えたら、32bit実数の型ってfloatですよね・・・。それをdouble*の型にして進めていったのが完全なミスでした(;´Д`A ```

ってことで、char* imageDataを

(float*)(void*)imageDataと型をキャストして、あとはポインタを進めていけば読み取ることができました(ひょっとするとvoid*に一旦キャストする必要はないかも)。

お手数をおかけしましたm(_ _"m)ペコリ

お礼日時:2005/12/01 15:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!