• 締切済み

OpenCVで処理した画像の表示方法。

VC++でOpenCVを使って画像処理を研究中です。 OpenCVでの画像の表示は、 char *filename = "lena.jpg"; image = cvLoadImage(filename, CV_LOAD_IMAGE_COLOR); cvNamedWindow ("lena", CV_WINDOW_AUTOSIZE); cvShowImage ("lena",image); で出来るということは分かりました。 しかし、MFCで作ったフォームのピクチャーボックスへの表示の仕方が分かりません。 画像処理は実行ボタンでpictureBox1の元の画像をpictureBox2に表示させようと考えております。 回答のほど、どうぞよろしくお願いいたします。 また、分かりやすいサイトなどありましたらお願いします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

MFCのピクチャーボックスはStaticコントロールですので Bitmap(またはCBitmap)なら表示可能です そのダイアログクラスに CBitmap型の変数を準備します img = cvLoadImage( filename, 1 ); // ビットマップ用のカラーバッファ char* ColorBuf = (char*)calloc( sizeof(char), img->widhth * 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 ];   } } m_bmp.CreateBitmap( img->width, img->height, 1, 32, ColorBuf ); free( ColorBuf ); ((CStatic*)GetDlgItem( IDC_IMGSRC ))->SetBitmap ( m_bmp ); cvReleaseImage( &img ); といった具合でしょう ダイアログに貼り付けたピクチャーコントロールはプロパティの設定でBitmapにしておきましょう またリソースIDも『IDC_STATIC』以外のものに変更することをお忘れなく 上記の例では IDC_IMGSRC だと仮定しています

s0511146
質問者

補足

早速の回答ありがとうございます。 処理後の画像を表示するころができました。 しかし、バグったように表示されてしまいます。 ピクチャーボックスの上の方に、画像が4つ並んで表示されています。 何か改善すべきところはあるでしょうか? よろしくお願いいたします。

関連するQ&A