原创 bmp和opencv格式转换

2009-2-20 15:29 3771 6 6 分类: 软件与OS

bmp和opencv格式转换



 




IplImage * BmpTOIpl(int width,int height,unsigned char  *pBuffer)
{
    IPlImage 
*image =cvCreateImage(cvSize(width,height),8,1);
   image
->imageData=pBuffer;
   
return image;
}





CDibPtr IplToDib(IplImage 
*image)
{
   CDibPtr m_ptrBitmaps;
   CSize ImageSize;
   ImageSize.cx
=image->width;
   ImageSize.cy
=image->height;
   m_ptrBitmaps.Create(ImageSize, 
8, CDib::TopDown, CDib::Monochrome);
  (unsigned 
char*) m_ptrBitmaps->GetPixels()=image->ImageData;
  
return m_ptrBitmaps;
}

IplImage* hBitmap2Ipl(HBITMAP hBmp) 

BITMAP bmp; 

::GetObject(hBmp,
sizeof(BITMAP),&bmp); 

int nChannels = bmp.bmBitsPixel == 1 ? 1 : bmp.bmBitsPixel/8 ; 
int depth = bmp.bmBitsPixel == 1 ? IPL_DEPTH_1U : IPL_DEPTH_8U; 

IplImage
* img = cvCreateImageHeader( cvSize(bmp.bmWidth, bmp.bmHeight) 
, depth, nChannels ); 

img
->imageData = 
(
char*)malloc(bmp.bmHeight*bmp.bmWidth*nChannels*sizeof(char)); 
memcpy(img
->imageData,(char*)(bmp.bmBits),bmp.bmHeight*bmp.bmWidth*nChannels); 

return img; 
}
 


void createDIB(IplImage* &pict)
IplImage 
* Red=cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT), 
IPL_DEPTH_8U, 
1 ); 
IplImage 
* Green=cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT), 
IPL_DEPTH_8U, 
1 ); 
IplImage 
* Blue=cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT), 
IPL_DEPTH_8U, 
1 ); 
cvSetImageCOI( pict, 
3); 
cvCopy(pict,Red); 
cvSetImageCOI( pict, 
2); 
cvCopy(pict,Green); 
cvSetImageCOI(pict, 
1); 
cvCopy(pict,Blue); 
//Initialize the BMP display buffer 
bmi = (BITMAPINFO*)buffer; 
bmih 
= &(bmi->bmiHeader); 
memset( bmih, 
0sizeof(*bmih)); 
bmih
->biSize = sizeof(BITMAPINFOHEADER); 
bmih
->biWidth = IMAGE_WIDTH; 
bmih
->biHeight = IMAGE_HEIGHT; // -IMAGE_HEIGHT; 
bmih->biPlanes = 1
bmih
->biCompression = BI_RGB; 
bmih
->biBitCount = 24
palette 
= bmi->bmiColors; 
forint i = 0; i < 256; i++ )
palette.rgbBlue 
= palette.rgbGreen = palette.rgbRed = 
(BYTE)i; 
palette.rgbReserved 
= 0
}
 
cvReleaseImage(
&Red); 
cvReleaseImage(
&Green); 
cvReleaseImage(
&Blue); 
}



 

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条