OpenCV中IplImage 与 Gdiplus 中Bitmap之间的相互转换
来源:互联网 发布:学校排课软件 编辑:程序博客网 时间:2024/05/31 00:39
Gdiplus::Bitmap转 IplImage
OpenCV中 IplImage 转 Gdiplus::Bitmap
经测试可用,如果有问题,欢迎讨论!
mail: mosesyuan at gmail.com
- // pIplImage 需要外部释放 Mosesyuan
- void CGeneral::BitmapToIplImage(Bitmap* pBitmap, IplImage* &pIplImg)
- {
- if (!pBitmap)
- {
- return;
- }
- if(pIplImg)
- {
- cvReleaseImage(&pIplImg);
- pIplImg = NULL;
- }
- BitmapData bmpData;
- Rect rect(0,0,pBitmap->GetWidth(),pBitmap->GetHeight());
- pBitmap->LockBits(&rect, ImageLockModeRead, PixelFormat24bppRGB, &bmpData);
- IplImage* tempImg = cvCreateImage(cvSize(pBitmap->GetWidth(), pBitmap->GetHeight()), IPL_DEPTH_8U, 3);
- BYTE* temp = (bmpData.Stride>0)?((BYTE*)bmpData.Scan0):((BYTE*)bmpData.Scan0+bmpData.Stride*(bmpData.Height-1));
- memcpy(tempImg->imageData, temp, abs(bmpData.Stride)*bmpData.Height);
- pBitmap->UnlockBits(&bmpData);
- pIplImg = tempImg;
- //判断Top-Down or Bottom-Up
- if (bmpData.Stride<0)
- cvFlip(pIplImg, pIplImg);
- }
- // pBitmap 同样需要外部释放!!
- void CGeneral::IplImageToBitmap(IplImage* pIplImg, Bitmap* &pBitmap)
- {
- if(!pIplImg)
- return;
- BITMAPINFOHEADER bmih;
- memset(&bmih, 0, sizeof(BITMAPINFOHEADER));
- bmih.biSize = sizeof(BITMAPINFOHEADER);
- bmih.biWidth = pIplImg->width;
- bmih.biHeight = pIplImg->height;
- bmih.biPlanes = 1;
- bmih.biBitCount = pIplImg->depth*pIplImg->nChannels;
- bmih.biSizeImage = pIplImg->imageSize;
- BYTE* pData=new BYTE[bmih.biSizeImage];
- memcpy(pData, pIplImg->imageDataOrigin, pIplImg->imageSize);
- if (pBitmap)
- {
- delete pBitmap;
- pBitmap = NULL;
- }
- pBitmap = Gdiplus::Bitmap::FromBITMAPINFO((BITMAPINFO*)&bmih, pData);
- }
mail: mosesyuan at gmail.com
- OpenCV中IplImage 与 Gdiplus 中Bitmap之间的相互转换
- OpenCV中IplImage 与 Gdiplus 中Bitmap之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OPENCV中MAT与IPLIMAGE和CVMAT类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- OpenCV中Mat与IplImage和CvMat类型之间的相互转换
- opencv中Mat与IplImage的相互转换
- 【OpenCV】Mat与IplImage、cvMat之间的相互转换
- android开发中Bitmap与Drawable之间的相互转换
- 局域网拷贝文件
- BASH 中的字符串处理
- iReport 中pdf不显示静态中文
- 向量基础
- 动态改变基于CDialog的窗口的大小
- OpenCV中IplImage 与 Gdiplus 中Bitmap之间的相互转换
- 内核驱动加载调试(1)
- 一个循环创建多级目录(vc++)
- 一:如何造成死锁?
- HtmlTextWriter类
- flash与javacript通信(1)
- 定时自动重启IIS和定时重启服务器
- urlEncode (vc++)
- 好名字全集