opencv-hbitmap在内存中直接转jgp格式-bmp转jpg
IplImage* CMainFrame::Bitmap2IplImage(HANDLE hBitmap) { BITMAP bmp; // 得到位图对象 int nPicSize; nPicSize = sizeof(BITMAP); GetObject(hBitmap, sizeof(BITMAP), &bmp); int depth,nChannels; if(bmp.bmBitsPixel == 1)//得到图像深度和通道数 { depth=IPL_DEPTH_1U; nChannels=1; } else { depth=IPL_DEPTH_8U; nChannels=bmp.bmBitsPixel/8; } long nBuffer = bmp.bmHeight*bmp.bmWidth*nChannels; IplImage* pImg = cvCreateImage(cvSize(bmp.bmWidth,bmp.bmHeight), depth, nChannels); //创建图像 BYTE *pBuffer = new BYTE[nBuffer]; //创建缓冲区 //GetBitmapBits(hBmp, bmp.bmHeight*bmp.bmWidth*nChannels, pBuffer); //将位图信息复制到缓冲区 GetBitmapBits((HBITMAP)hBitmap, nBuffer, pBuffer); //将位图信息复制到缓冲区 memcpy(pImg->imageData, pBuffer, nBuffer);//将缓冲区信息复制给IplImage delete [] pBuffer;//防止内存泄露 //cvSaveImage("kkk.jpg",pImg,0); return pImg; }