遇到的问题;
http://blog.ednchina.com/opencv2008/201557/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;
}
如果那位仁兄又JPG转换到BMP文件格式的代码,发来一份,研究研究
文章评论(0条评论)
登录后参与讨论