グレースケール時の画素値の順番について
今VC++でOpenCVを使ってプログラムを作っています。
白黒のシルエット写真(.bmp)をcvLoadImageでグレースケール画像の8bit1チャンネルとして読み込んでいます。
↓↓
IplImage* p = cvLoadImage(filename, CV_LOAD_IMAGE_GRAYSCALE);
このpのピクセルごとの画素値を手に入れたいのですが、
IplImageではグレースケール時にはどのような並びで入っているのでしょうか?
3チャンネルならBGRの順で格納されているのはわかるんですが、
1チャンネルの時はそのままポインタがずれれば、次のピクセルという風にシンプルになっているのでしょうか?
今のところポインタを1つずらしたところを隣のピクセルという風に処理をしているんですが、
取り出した値を見ても負の値が出てきているので、たぶん間違いなのでしょう。
どなたか知恵をお貸しください。
No.3ベストアンサー
- 回答日時:
CV_LOAD_IMAGE_GRAYSCALEで読みこんだのなら、1 チャンネルのデータになっているはずです。
http://opencv.jp/opencv-2svn/c/basic_structures. …
念のため、 p->nChannels の値を確認してください。1になっているはずです。
> 今のところポインタを1つずらしたところを隣のピクセルという風に処理をしているんですが、
> 取り出した値を見ても負の値が出てきているので、たぶん間違いなのでしょう。
IplImage.imageData は char *型(つまり、符号付きchar型)なので、 128~255は -128~-1になります。
unsigned char dc = p->imageData[ y * p->widthStep + x] ;
int dsi = 0xff & (p->imageData[ y * p->widthStep + x] ) ;
など、符号無し型やより大きい型の下位ビットにするようにする必要があります。
No.2
- 回答日時:
どこまでご存知なのかわからないので回答しにくいです
リファレンスやサンプルコードが豊富にある
http://opencv.jp/sample/basic_structures.html#ac …
はご存知でしょうか
グレースケールの場合 R=G=B ということはご存知ですよね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Python画像処理について 1 2022/05/17 17:40
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Photoshop(フォトショップ) PhotoshopCSで、写真画像をグレーにした上で、5色(例えば虹色等)のグラデーションをかけたい 3 2023/03/18 12:10
- Photoshop(フォトショップ) 情報処理の画像生成の問題について 2 2023/05/05 23:56
- デスクトップパソコン パソコンにエラーメッセージが出る 起動順の変更ができない 3 2023/04/11 18:24
- Photoshop(フォトショップ) Photoshopの画像が重すぎるので軽くしたいです 7 2022/05/13 20:13
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- Photoshop(フォトショップ) インデザイン 上で、フォトショップの線の色を変えたい 4 2022/06/12 18:49
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- YouTube Youtubeの使い方 1 2023/06/13 07:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
アプリを32bitから64bit移行
-
DLL<->VB間での受け渡し(文字...
-
C言語のポインタに直接アドレス...
-
LPSTR型の初期化について
-
参照型で受け取った引数をポイ...
-
戻り値で構造体を返すことは可...
-
構造体とfscanf
-
fopne で失敗する原因
-
NASMかNASKの文法の本
-
関数ポインタの高速化のメリット
-
自作関数の引数
-
Cで作成したDLL関数をVBから呼...
-
popenした子プロセスのプロセス...
-
#define NULL ((void *)0) の弊害
-
C言語のプログラムをJavaに...
-
visual studioのエラーについて
-
x64プログラムでアドレスが32bi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
連結リスト 要素の入れ替え
-
C言語でのconstを返す関数
-
Cで作成したDLL関数をVBから呼...
-
NULLとブランクの違い
-
エラーの意味
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
-
【C言語】戻り値が構造体の関数
おすすめ情報