分享

Bitmap与IplImage之间的转换

 盛夏流年闪耀 2015-11-02
Bitmap转为iplimage代码 复制代码 收藏代码
  1. IplImage* BitmapToIplImage(HBITMAP hBmp)   
  2. {   
  3.     BITMAP bmp;       
  4.        
  5.     GetObject(hBmp, sizeof(BITMAP), &bmp);   
  6.     int depth     (bmp.bmBitsPixel == 1IPL_DEPTH_1U IPL_DEPTH_8U;   
  7.     int nChannels (bmp.bmBitsPixel == 11 bmp.bmBitsPixel/8      
  8.        
  9.     IplImage* img cvCreateImage(cvSize(bmp.bmWidth,bmp.bmHeight), depth, nChannels);     
  10.        
  11.     BYTE *pBuffer new BYTE[bmp.bmHeight*bmp.bmWidth*nChannels];       
  12.     GetBitmapBits(hBmp, bmp.bmHeight*bmp.bmWidth*nChannels, pBuffer);   
  13.     memcpy(img->imageData, pBuffer, bmp.bmHeight*bmp.bmWidth*nChannels);      
  14.     delete pBuffer;   
  15.   
  16.     IplImage *dst cvCreateImage(cvGetSize(img), img->depth,3);       
  17.     cvCvtColor(img, dst, CV_BGRA2BGR);      
  18.     cvReleaseImage(&img);      
  19.     return dst;   
  20.  

 如果要从CBitmap转为IplImage,可以先将CBitmap转为BITMAP,再由BITMAP转为IplImage;

Cbitmap 转为 bitmap代码 复制代码 收藏代码
  1. // CBitmap 转为 BITMAP   
  2. CBitmap bitmap;   
  3. bitmap.LoadBitmap(IDB_BITMAP);   
  4. BITMAP   bmp;   
  5. bitmap.GetBitmap(&bmp);   
  6.   
  7. // CBitmap与HBITMAP间的转换   
  8. // CBitmap转为HBITMAP   
  9. CBitmap bitmap;   
  10. bitmap.LoadBitmap(IDB_BITMAP);   
  11. HBITMAP bmp HBITMAP(bitmap);   
  12. // HBITMAP转为CBitmap   
  13. HBITMAP  hbitmap;     
  14. CBitmap   bitmap;   
  15. bitmap.Attach(hbitmap);  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多