• 大小: 18.4MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-25
  • 语言: 其他
  • 标签: bmp  ppm  pgm  

资源简介

实现图像格式的转化,将bmp的彩色图像转化为其他简单格式,便于使用。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

void saveimage_ppm(const char *file_nameunsigned char *imageint hint wbool is_binary=true);
void write_binary_ppm(const char* file_nameunsigned char* imageint hint w);
void write_ascii_ppm(const char* file_nameunsigned char *imageint hint w);
void saveimage_pgm(const char *file_nameunsigned char *imageint hint wbool is_binary=true);
void write_binary_pgm(const char * file_nameunsigned char* imageint hint w);
void write_ascii_pgm(const char * file_nameunsigned char *imageint hint w);
int main()
{
BITMAPFILEHEADER bf;//bmp文件头结构体;
BITMAPINFOHEADER bi;//bmp信息头结构体;

FILE* fp;
DWORD LineByteImgSize;
unsigned char** Imgdata;

//打开文件;
int num = 100;
string filepath = “E:\\多视角重建\\dataset\\Book Arrival\\BookArrival_Cam10_Depth_bmp\\“;
string savepath = “E:\\多视角重建\\dataset\\Book Arrival\\BookArrival_Cam10_Depth_pgm\\“;
for(int n = 1; n < num+1; n++)
{
char ind[5];
string basename = “Cam10_Depth_“;
string postfix1 = “.bmp“;
string postfix2 = “.pgm“;
itoa(nind10);

string fullname;
fullname = filepath + basename;
fullname = fullname + ind + postfix1;
string savename;
savename = savepath + basename;
savename = savename + ind + postfix2;

fp = fopen(fullname.c_str()“rb“);
if(fp == NULL)
{
printf(“can not open file“);
exit(0);
return -1;
}

//读取信息头、文件头;
fread(&bf sizeof(BITMAPFILEHEADER) 1 fp);
fread(&bi sizeof(BITMAPINFOHEADER) 1 fp);

LineByte = bi.biSizeImage/bi.biHeight;
ImgSize = (DWORD)LineByte*bi.biHeight;
Imgdata = new unsigned char*[bi.biHeight];

if(bi.biBitCount == 24)
{
for(int i = 0; i < bi.biHeight; i++)
Imgdata[i] = new unsigned char[(bi.biWidth*3+3)/4*4];

for(int i = 0; i < bi.biHeight; i++)
for(int j = 0; j < (bi.biWidth*3+3)/4*4; j++)
fread(&Imgdata[i][j]11fp);
}
fclose(fp);

//写成ppm文件;
/*unsigned char* ImgData = new unsigned char[bi.biWidth*bi.biHeight*3];
memset(ImgData0sizeof(unsigned char)*bi.biWidth*bi.biHeight*3);
for(int i = 0; i < bi.biHeight; i++)
{
for(int j = 0; j < bi.biWidth; j++)
{
int tind = 3*((bi.biHeight-1-i)*bi.biWidth + j);
ImgData[tind+0] = Imgdata[i][3*j+2];
ImgData[tind+1] = Imgdata[i][3*j+1];
ImgData[tind+2] = Imgdata[i][3*j+0];
}
}
saveimage_ppm(savename.c_str()ImgDatabi.biHeightbi.biWidth);*/

//写成pgm文件;
unsigned char* ImgData = new unsigned char[bi.biWidth*bi.biHeight];
memset(ImgData0sizeof(unsigned char)*bi.biWidth*bi.biHeight);
for(int i = 0; i < bi.biHeight; i++)
{
for(int j = 0; j < bi.biWidth; j++)
{
int tind = (bi.biHeight-1-i)*bi.biWidth + j;
ImgData[tind+0] = Imgdata[i][3*j+0];
}
}
saveimage_pgm(savename.c_str()ImgDatabi.biHeightbi.biWidth);

for(int i = 0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-04-28 15:45  Cvt_BMP_to_PPM\
     目录           0  2017-04-28 11:29  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\
     文件    30494720  2017-04-28 15:45  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM.sdf
     文件         909  2017-04-28 10:30  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM.sln
     文件       11776  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM.suo
     文件        3924  2017-04-28 10:35  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Cvt_BMP_to_PPM.vcxproj
     文件         942  2017-04-28 10:35  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Cvt_BMP_to_PPM.vcxproj.filters
     文件         143  2017-04-28 10:30  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Cvt_BMP_to_PPM.vcxproj.user
     目录           0  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\
     文件         642  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\cl.command.1.tlog
     文件       19846  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\CL.read.1.tlog
     文件         324  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\CL.write.1.tlog
     文件         406  2017-04-28 11:29  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\Cvt_BMP_to_PPM.exe.embed.manifest
     文件         472  2017-04-28 11:29  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\Cvt_BMP_to_PPM.exe.embed.manifest.res
     文件         381  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\Cvt_BMP_to_PPM.exe.intermediate.manifest
     文件          61  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\Cvt_BMP_to_PPM.lastbuildstate
     文件        3747  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\Cvt_BMP_to_PPM.log
     文件         218  2017-04-28 11:29  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\Cvt_BMP_to_PPM_manifest.rc
     文件           2  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link-cvtres.read.1.tlog
     文件           2  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link-cvtres.write.1.tlog
     文件           2  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link.8696-cvtres.read.1.tlog
     文件           2  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link.8696-cvtres.write.1.tlog
     文件           2  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link.8696.read.1.tlog
     文件           2  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link.8696.write.1.tlog
     文件        3134  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link.command.1.tlog
     文件        7902  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link.read.1.tlog
     文件         754  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\link.write.1.tlog
     文件      138991  2017-04-28 15:43  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\main.obj
     文件         422  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\mt.command.1.tlog
     文件         338  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\mt.read.1.tlog
     文件         338  2017-04-28 15:44  Cvt_BMP_to_PPM\Cvt_BMP_to_PPM\Debug\mt.write.1.tlog
............此处省略14个文件信息

评论

共有 条评论