いつもこちらでお世話になっております。
現在OpenCVをつかって画像処理を行なっています。言語はVC++です。
OpenCVで処理した画像を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++ ) {
// Blue
ColorBuf[ y * img->width + x * 4 + 0 ] =
img->imageData[ y * img->widthStep + x * 3 + 0 ];
// Green
ColorBuf[ y * img->width + x * 4 + 1 ] =
img->imageData[ y * img->widthStep + x * 3 + 1 ];
// Red
ColorBuf[ y * img->width + x * 4 + 2 ] =
img->imageData[ y * img->widthStep + x * 3 + 2 ];
}
}
mbmp.CreateBitmap( img->width, img->height, 1, 32, ColorBuf );
free( ColorBuf );
((CStatic*)GetDlgItem( IDC_IMGSRC ))->SetBitmap ( mbmp );
myDC.CreateCompatibleDC(pDC);
CBitmap *oldBMP = myDC.SelectObject(&mbmp);
pDC->BitBlt(0,0,300,300,&myDC,0,0,SRCCOPY);
myDC.SelectObject(oldBMP);
cvReleaseImage( &img );
//-----------------------------------------------
PictureBoxのリソースIDをIDC_IMGSRCに設定しています。
今はPictureBoxの上部に画像が4つ並んでしまっている状態です。
なにか改善すべきところがありましたらよろしくお願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> myDC.CreateCompatibleDC(pDC);
> CBitmap *oldBMP = myDC.SelectObject(&mbmp);
> pDC->BitBlt(0,0,300,300,&myDC,0,0,SRCCOPY);
> myDC.SelectObject(oldBMP);
が不要に思います
mbmpはメンバー変数なんですよね ・・・
グレースケールで読み込んでいるのですからimgのデータは512x512しかありません
ビットマップデーを構築する部分は
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 ];
といった具合でしょう
y軸の計算に 幅だけでなく 1ピクセル分のバッファも乗算しましょう
この回答への補足
早速の回答ありがとうございます。
前表示されたものよりよい感じに表示されるのですが、
次はPictureBoxにたて3つの画像が表示されてしまいます。
解決策などありましたらよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- PHP PHP echo バックスラッシュの使い方 img要素 2 2023/01/08 22:46
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MFCで画像を表示させているので...
-
JavaScriptで変更した属性の元...
-
(javascript)HTMLで指定した...
-
onclickで画面が固まる・・・ら...
-
OpenCVでサンプルコードを使う...
-
error LNK2019 未解決のシンボ...
-
指定したフォルダの画像を一括...
-
画像が表示でnull; this.src
-
createElementによる空要素の生...
-
画像がうまく表示されないのですが
-
HPにスライドショーが反映され...
-
MAX関数を使ってからLEFT JOIN...
-
Gifアニメ、最後のコマに行った...
-
クリックで色変更後に既に変更...
-
createElementが一瞬で消えてし...
-
複数のバナーをリロードする度...
-
デフォルト非表示にしたい。【t...
-
javascriptテキストBOX色を元に...
-
iframe内のリンクが飛ばないの...
-
Slick.jsのオプションrtlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptで変更した属性の元...
-
MFCで画像を表示させているので...
-
画像が表示でnull; this.src
-
error LNK2019 未解決のシンボ...
-
(javascript)HTMLで指定した...
-
外部javascriptの重複を防ぐには
-
libjpegライブラリの使い方につ...
-
Vb.net2005での画像の合成方法
-
外部ファイルにしたら文字化け...
-
jQuery 複数のfind()
-
HTMLからimgのsrcのみを正規表...
-
html内にスライドショーを複数設置
-
条件分岐でキーが入力されてい...
-
複数画像のランダム複数表示(...
-
ダイアログから画像ファイルは...
-
【OpenCV】二値画像後、白の部...
-
"lightbox"の"CLOSE"ボタンクリ...
-
onclickで画面が固まる・・・ら...
-
pythonで、tkinterとpillowの組...
-
imgボタンにfocusの当て方
おすすめ情報