您的位置:首页 > 运维架构

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

2011-03-03 09:52 519 查看
转帖自:http://blog.ednchina.com/opencv2008/205865/message.aspx

OPENCV论坛: http://www.opencv.org.cn/index.php/BMP%E4%B8%8EIplImage%E7%9B%B8%E4%BA%92%E8%BD%AC%E6%8D%A2 一个博客: 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: