VC++にてOpenCVを使い画像処理を行っている者です。
処理後の画像をMFCで作成したPictureBoxに表示したいのですが、
IplImageからBmpへの変換がうまくいきません。
//---------------------------------------------------------------
IplImage *img;
img = cvLoadImage(filename, 0); // 0: グレイスケールで読み込む
cvThreshold(img,img, 70, 255, CV_THRESH_BINARY_INV);//二値化
char* ColorBuf = (char*)calloc( sizeof(char), img->width * img->height * 4 );
for( int y = 0; y < img->height; y++ ) {
for( int x = 0; x < img->width; x++ ) {
ColorBuf[ y * img->width * 4 + x * 4 + 0 ] =
img->imageData[ y * img->widthStep + x * 3 + 0 ];
ColorBuf[ y * img->width * 4 + x * 4 + 2 ] =
ColorBuf[ y * img->width * 4 + x * 4 + 1 ]=
ColorBuf[ y * img->width * 4 + x * 4 + 0 ];
}
}
mbmp.CreateBitmap( img->width, img->height, 1, 32, ColorBuf );
free( ColorBuf );
((CStatic*)GetDlgItem( IDC_IMGSRC ))->SetBitmap ( mbmp );
cvReleaseImage( &img );
}
//---------------------------------------------------------------
今はPictureBoxに3つ縦に画像が表示されてしまってます。
何か改善点などがありましたらよろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ColorBuf[ y * img->width * 4 + x * 4 + 0 ] =
img->imageData[ y * img->widthStep + x * 3 + 0 ];
ここが違いますよ
グレースケールなので チャンネル(プレーン)は1つしかありません
したがって
ColorBuf[ y * img->width * 4 + x * 4 + 0 ] =
img->imageData[ y * img->widthStep + x + 0 ];
といった具合に『 * 3 』を除去しましょう
定数でハードコードするより
img->imageData[ y * img->widthStep + x * img->nChannels + 0 ]
などした方がわかりやすいかも ・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- PHP PHP echo バックスラッシュの使い方 img要素 2 2023/01/08 22:46
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS imgとpを縦・横に中央揃えする 1 2023/01/17 11:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【OpenCV】二値画像後、白の部...
-
pythonで、tkinterとpillowの組...
-
JavaScriptで変更した属性の元...
-
html内にスライドショーを複数設置
-
外部ファイルにしたら文字化け...
-
nodejsの画像表示は特別なこと...
-
javascriptの記述について
-
複数画像のランダム複数表示(...
-
Vb.net2005での画像の合成方法
-
外部javascriptの重複を防ぐには
-
OpenCVで固定枠で画像を操作す...
-
リンク先を動的に変更する
-
jsでサムネイルを拡大表示 複...
-
画像をフィルターを使って入れ...
-
error LNK2019 未解決のシンボ...
-
MAX関数を使ってからLEFT JOIN...
-
createElementで作成した要素を...
-
背景色を透明化
-
Lightbox2でのキャプションにつ...
-
同一ページ内の複数のタグに同...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptで変更した属性の元...
-
MFCで画像を表示させているので...
-
複数画像のランダム複数表示(...
-
Vb.net2005での画像の合成方法
-
画像が表示でnull; this.src
-
外部javascriptの重複を防ぐには
-
外部ファイルにしたら文字化け...
-
【OpenCV】二値画像後、白の部...
-
error LNK2019 未解決のシンボ...
-
こんにちは、javascriptにてボ...
-
条件分岐でキーが入力されてい...
-
ダイアログから画像ファイルは...
-
jqueryスライドショーをストッ...
-
onclickで画面が固まる・・・ら...
-
OpenCV での画素値の比較について
-
jsでサムネイルを拡大表示 複...
-
imgボタンにfocusの当て方
-
ラズパイでno module named zbar
-
HTMLからimgのsrcのみを正規表...
-
Javaの正規表現でimgタグのalt...
おすすめ情報