OpenCV读入的图像如何显示在窗体上

IplImage *  pImg; 
   CString strPathName; 
   CFileDialog dlg(TRUE); 
   CDC
*  pDC  =   this -> GetDC(); 
   CRect rect; 
   
this -> GetClientRect( & rect); 
   
if (dlg.DoModal() == IDOK) 
   

      strPathName 
= dlg.GetPathName(); 

      pImg 
= cvLoadImage(strPathName); 
      BITMAPINFO bmi; 
      FillBitmapInfo(
&bmi,pImg->width,pImg->height,(pImg->depth)*(pImg->nChannels));    
       
      ::StretchDIBits(pDC
->GetSafeHdc(),rect.left,rect.top,pImg->width,pImg->height,0,0,pImg->width,pImg->height,pImg->imageData,&bmi,DIB_RGB_COLORS,SRCCOPY); 
   }


void   COpenCVDrawView::FillBitmapInfo( BITMAPINFO *  bmi,  int  width,  int  height,  int  bpp ) 

    ASSERT( bmi 
&& width > 0 && height > 0 && 
      (bpp 
== 8 || bpp == 24 || bpp == 32) ); 
    
    BITMAPINFOHEADER
* bmih = &(bmi->bmiHeader); 
    
    memset( bmih, 
0sizeof(*bmih)); 
    bmih
->biSize   = sizeof(BITMAPINFOHEADER); 
    bmih
->biWidth  = width; 
    bmih
->biHeight = -abs(height); 
    bmih
->biPlanes = 1
    bmih
->biBitCount = bpp; 
    bmih
->biCompression = BI_RGB; 
    
    
if( bpp == 8 ) 
    

        RGBQUAD
* palette = bmi->bmiColors; 
        
int i; 
        
for( i = 0; i < 256; i++ ) 
        

            palette[i].rgbBlue 
= palette[i].rgbGreen = palette[i].rgbRed = (BYTE)i; 
            palette[i].rgbReserved 
= 0
        }
 
    }
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值