• 大小: 13.86MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-13
  • 语言: C/C++
  • 标签: 猫变虎  代码  

资源简介

计算机图形学猫变虎作业 代码及示例结果,c++语言编程

资源截图

代码片段和文件信息

#include 
#include 
#include 


using namespace std;

unsigned char *pBmpBuf;
int bmpWidthbmpHeight;    //长宽
unsigned int biBitCount;            //每像素位数
RGBQUAD *pColorTable;      //颜色表指
int offbits;
int bitPerLine;
///图片格式为bmp格式/////
//图片读入函数///
bool Inputbmp(char *bmpName){


FILE *fp=fopen(bmpName“rb“);
if(!fp){
cout<<“read fail\n“;
return 0;
}
//跳过位图文件头结构BITMAPFILEHEADER
fseek(fp sizeof(BITMAPFILEHEADER)0); 

//BITMAPINFOHEADER head;
BITMAPINFOHEADER head;
fread(&head sizeof(BITMAPINFOHEADER) 1fp); 

bmpWidth = head.biWidth;  //获取图像宽、高、每像素所占位数等信息
bmpHeight = head.biHeight;
biBitCount = head.biBitCount; //定义变量,计算图像每行像素所占的字节数

int lineByte=(bmpWidth * biBitCount/8+3)/4*4;  //灰度图像有颜色

if(biBitCount==8)
cout<<“can‘t show 8 bits\n“; 
    //申请位图数据所需要的空间,读位图数据进内存
pBmpBuf=new unsigned char[lineByte * bmpHeight];
    fread(pBmpBuf1lineByte * bmpHeightfp);

fclose(fp);
cout<<“read success\n“;
return 1;
}
///图片储存函数////
bool saveBmp(char *bmpNameunsigned char *imgBuf int width int height int biBitCount RGBQUAD *pColorTable){
//如果位图数据指针为0,则没有数据传入,函数返回
if(!imgBuf)
return 0;

int colorTablesize=0;
if(biBitCount==8)
cout<<“can‘t show 8 bits\n“; 

int lineByte=(width * biBitCount/8+3)/4*4;
//以二进制写的方式打开文件
FILE *fp=fopen(bmpName“wb“);
if(fp==0)
return 0;
//申请位图文件头结构变量,填写文件头信息
BITMAPFILEHEADER fileHead;
fileHead.bfType = 0x4D42;//bmp类型
//bfSize是图像文件4个组成部分之和
fileHead.bfSize= sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + colorTablesize + lineByte*height;
fileHead.bfReserved1 = 0;
fileHead.bfReserved2 = 0; //bfOffBits是图像文件前3个部分所需空间之和
fileHead.bfOffBits=54+colorTablesize;//写文件头进文件
fwrite(&fileHead sizeof(BITMAPFILEHEADER)1 fp);

BITMAPINFOHEADER head;
head.biBitCount=biBitCount;
head.biClrImportant=0;
head.biClrUsed=0;
head.biCompression=0;
head.biHeight=height;
head.biPlanes=1;
head.biSize=40;
head.biSizeImage=lineByte*height;
head.biWidth=width;
head.biXPelsPerMeter=0;
head.biYPelsPerMeter=0;//写位图信息头进内存
fwrite(&head sizeof(BITMAPINFOHEADER)1 fp);//如果灰度图像,有颜色表,写入文件
fwrite(imgBuf height*lineByte 1 fp);
fclose(fp);
return 1;
}

//猫变虎函数
void change(){
int cat_i[20000]cat_ib[20000]cat_ig[20000];
int tiger_i[20000]tiger_ib[20000]tiger_ig[20000];
char address_tiger[998];
char address_cat[999];
cout<<“Input picture_begin:\n“; ///输入变化前图片名 必须加后缀(.bmp)!!!!
cin>>address_cat;
cout<<“Input picture_end:\n“ ;  ////输入变化后图片名
cin>>address_tiger;


Inputbmp(address_tiger);
int lineByte=(bmpWidth*biBitCount/8+3)/4*4;
int m=0n=0count_xiang_su=0;
if(biBitCount==24)
{
for(int i=0;i {
for(int j=0;j
n++;
m=*(pBmpBuf+i*lineByte+j*3);
tiger_i[n]=m;
m=*(pBmpBuf+i*lineByte+j*3+1);
tiger_ib[n]=m;
m=*(pBmpBuf+i*lineByte+j*3+2);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      30054  2012-10-09 21:36  Cattotiger\0.bmp

     文件      30054  2012-10-09 21:36  Cattotiger\1.bmp

     文件      30054  2012-10-09 21:36  Cattotiger\2.bmp

     文件      30054  2012-10-09 21:36  Cattotiger\3.bmp

     文件      30054  2012-10-09 21:36  Cattotiger\4.bmp

     文件      30054  2012-10-09 21:36  Cattotiger\5.bmp

     文件      30054  2012-10-09 21:36  Cattotiger\6.bmp

     文件      30054  2012-10-09 21:36  Cattotiger\7.bmp

     文件      30054  2012-10-09 21:36  Cattotiger\8.bmp

     文件      30054  2012-10-08 20:20  Cattotiger\cat.bmp

     文件   27807744  2012-10-09 21:37  Cattotiger\Cattotiger.sdf

     文件        886  2012-10-08 19:11  Cattotiger\Cattotiger.sln

    ..A..H.     63488  2012-10-09 21:37  Cattotiger\Cattotiger.suo

     文件       3919  2012-10-08 19:46  Cattotiger\Cattotiger.vcxproj

     文件        941  2012-10-08 19:46  Cattotiger\Cattotiger.vcxproj.filters

     文件        143  2012-10-08 19:11  Cattotiger\Cattotiger.vcxproj.user

     文件      58880  2012-10-09 21:36  Cattotiger\Debug\Cattotiger.exe

     文件        406  2012-10-08 19:46  Cattotiger\Debug\Cattotiger.exe.embed.manifest

     文件        472  2012-10-08 19:46  Cattotiger\Debug\Cattotiger.exe.embed.manifest.res

     文件        381  2012-10-09 21:36  Cattotiger\Debug\Cattotiger.exe.intermediate.manifest

     文件     694032  2012-10-09 21:36  Cattotiger\Debug\Cattotiger.ilk

     文件         88  2012-10-09 21:36  Cattotiger\Debug\Cattotiger.lastbuildstate

     文件       3402  2012-10-09 21:36  Cattotiger\Debug\Cattotiger.log

     文件     863232  2012-10-09 21:36  Cattotiger\Debug\Cattotiger.pdb

     文件        210  2012-10-08 19:13  Cattotiger\Debug\Cattotiger_manifest.rc

     文件        726  2012-10-09 21:36  Cattotiger\Debug\cl.command.1.tlog

     文件      20680  2012-10-09 21:36  Cattotiger\Debug\CL.read.1.tlog

     文件        452  2012-10-09 21:36  Cattotiger\Debug\CL.write.1.tlog

     文件          2  2012-10-09 21:36  Cattotiger\Debug\link-cvtres.read.1.tlog

     文件          2  2012-10-09 21:36  Cattotiger\Debug\link-cvtres.write.1.tlog

............此处省略34个文件信息

评论

共有 条评论