设为首页 加入收藏

TOP

IplImage和CBitmap转化
2014-11-11 09:00:10 】 浏览:5519
Tags:IplImage CBitmap 转化

  在写mfc程序时如果用到opencv,肯定会用到这两个之间的转化。在网上找了好多,几乎都一样,我的情况稍微特殊,找了半天也没合适的,MD,一气之下,自己跟踪进去CvvImage::DrawToHDC,


  void IplImage2CBitmap(Iplimage* ipg_src)


  {


  CBitmap* m_pBitmap=new CBitmap;


  if (ipg_src->depth==IPL_DEPTH_8U)


  {


  uchar buffer[sizeof(BITMAPINFOHEADER) + 1024];


  BITMAPINFO* bmi = (BITMAPINFO*)buffer;


  int bmp_w = ipg_src->width, bmp_h = ipg_src->height;


  //FillBitmapInfo( bmi, bmp_w, bmp_h, Bpp(), pImage->origin );


  int width=bmp_w;


  int height=bmp_h;


  int bpp=ipg_src (ipg_src->depth & 255)*ipg_src->nChannels : 0;


  int origin=ipg_src->origin;


  HBITMAP hBitmap;


  BITMAPINFOHEADER* bmih = &(bmi->bmiHeader);


  memset( bmih, 0, sizeof(*bmih));


  bmih->biSize = sizeof(BITMAPINFOHEADER);


  bmih->biWidth = width;


  bmih->biHeight = origin abs(height) : -abs(height);


  bmih->biPlanes = 1;


  bmih->biBitCount = (unsigned short)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;


  }


  }


  }


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MFC单文档多视图的静态创建法 下一篇最简单的MFC程序

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目