opencv:bmp和opencv图片格式的转换

    技术2022-05-20  29

    转帖自:http://blog.ednchina.com/opencv2008/205865/message.aspx

     

    OPENCV论坛:http://www.opencv.org.cn/index.php/BMP与IplImage相互转换一个博客:http://blog.csdn.net/hunnish/archive/2008/09/18/2947595.aspx//********************************************************//将IplImage文件转换为BMP文件//IplImage *pmg         opencv里面的文件格式//BITMAPINFO *pbmpinfo  得到的bmp文件图像信息头//BYTE **pbmpdata       得到的bmp图像文件数据//********************************************************BOOL Ipl2BMP(IplImage *Iplmg,BITMAPINFO **pbmpinfo,BYTE **pbmpdata){    BYTE    *p=new BYTE[2048];    *pbmpinfo=(BITMAPINFO*)p;    (*pbmpinfo)->bmiHeader.biSize         =sizeof(BITMAPINFOHEADER);    (*pbmpinfo)->bmiHeader.biBitCount     =Iplmg->nChannels*8;    (*pbmpinfo)->bmiHeader.biClrUsed      =0;    (*pbmpinfo)->bmiHeader.biCompression  =BI_RGB;    (*pbmpinfo)->bmiHeader.biHeight       =Iplmg->height;    (*pbmpinfo)->bmiHeader.biWidth        =Iplmg->width;    (*pbmpinfo)->bmiHeader.biPlanes       =1;    (*pbmpinfo)->bmiHeader.biSizeImage    =0;    (*pbmpinfo)->bmiHeader.biXPelsPerMeter=0;    (*pbmpinfo)->bmiHeader.biYPelsPerMeter=0;    int ImgSize=(((*pbmpinfo)->bmiHeader.biWidth  *  (*pbmpinfo)->bmiHeader.biBitCount +  31 )/32) * 4  * (*pbmpinfo)->bmiHeader.biHeight;         (*pbmpdata)=new BYTE[ImgSize+1];    memcpy(*pbmpdata,Iplmg->imageData,ImgSize);    return TRUE;}//******************************************************//bmp文件转换IPLImage文件//******************************************************IplImage *BMP2Ipl(BITMAPINFO *pbmpinfo,BYTE *pbmpdata){    int channal=(pbmpinfo->bmiHeader.biBitCount == 1) ? 1:(pbmpinfo->bmiHeader.biBitCount/8);    //仅限于二值图像和灰度图像    //int depth  =(pbmpinfo->bmiHeader.biBitCount == 1) ? IPL_DEPTH_1U : IPL_DEPTH_8U;    int depth  =  IPL_DEPTH_8U;    int width=pbmpinfo->bmiHeader.biWidth;    int heigh=pbmpinfo->bmiHeader.biHeight;    IplImage *pmg;    pmg=cvCreateImageHeader(cvSize(width,heigh),depth,channal);        pmg->imageData=(char*)malloc(pmg->imageSize);    pmg->origin=1;    //cvSetData();    memcpy(pmg->imageData,pbmpdata,pmg->imageSize);        return pmg;}


    最新回复(0)