いつもこちらでお世話になっております。
現在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ランキング
-
javascriptでのパスについて
-
画像を入れ替えたい
-
複数画像のランダム複数表示(...
-
ダイアログから画像ファイルは...
-
jqueryのスライドショー。html...
-
テキストにマウスオーバーで画...
-
MAX関数を使ってからLEFT JOIN...
-
htmlの記述で link rel=styles...
-
画像の上に画像リンクを貼る方法
-
スライダーを実装した場合、ペ...
-
背景色を一定時間ごとにランダ...
-
文字を固定したいのですが…
-
javascriptでURLにマウスオーバー
-
[急ぎ] videoタグで埋め込んだm...
-
文字と数字が混在する要素のsor...
-
離れた場所にマウスオーバーで...
-
ホームページビルダー15 メニュ...
-
c++std::string型をTCHARに変換...
-
タブで開いてさらにタブ内をア...
-
1行で左寄せと右寄せと中央揃え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptで変更した属性の元...
-
MFCで画像を表示させているので...
-
画像が表示でnull; this.src
-
error LNK2019 未解決のシンボ...
-
Vb.net2005での画像の合成方法
-
onclickで画面が固まる・・・ら...
-
リンク先を動的に変更する
-
(javascript)HTMLで指定した...
-
【OpenCV】二値画像後、白の部...
-
jQuery 複数のfind()
-
ラズパイでno module named zbar
-
外部javascriptの重複を防ぐには
-
条件分岐でキーが入力されてい...
-
かぶらないランダム画像
-
HTMLからimgのsrcのみを正規表...
-
pythonで、tkinterとpillowの組...
-
OpenCV での画素値の比較について
-
imgボタンにfocusの当て方
-
指定したフォルダの画像を一括...
-
OpenCVでサンプルコードを使う...
おすすめ情報