资源简介
计算机图形学猫变虎作业 代码及示例结果,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.em
文件 472 2012-10-08 19:46 Cattotiger\Debug\Cattotiger.exe.em
文件 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\li
文件 2 2012-10-09 21:36 Cattotiger\Debug\li
............此处省略34个文件信息
相关资源
- C++ Builder 6实用编程100例光盘、源代码
- C++ Builder 5高级编程精解光盘、源代码
- Visual C++/Turbo C串口通信编程实践第2版
- CTP_API_C++可实盘多合约多策略版本源代
- Visual C++实现MPEG/JPEG编解码技术代码集
- Directshow实现的虚拟摄像头win10+vs2013
- C++ MFC 吹泡泡 源代码
- 游戏编程代码\\游戏编程学习笔记之九
- C++ Primer第五版 源代码
- 基于MFC的图片浏览器代码
- 杨淑莹 数字图像处理VC++ 源代码 全
- C++Primer中文版(第4版) PDF + 代码
- 基于MFC的音乐播放器代码
- 单片机C语言程序设计实训100例第3篇综
- 数据结构C语言版-严蔚敏PDF + 课后题代
- 数据包捕获与分析 端口扫描 流量统计
- 表情识别C++代码
- 任燕《数据结构C++描述》实验指导书
- C++数值算法第二版PDF文档和源代码
- C语言小项目代码大全
- Visual C++数字图像获取、处理及实践应
- 汽车客运售票系统 用MFC实现 带友好界
- 一个回合制游戏demo
- Visual C++面向对象与可视化程序设计(
- 研华工控机C++代码
- 精通Visual C++数字图像处理典型算法及
- 局域网监控系统demo含源代码
- c++项目开发全程实录 随书源代码 刘志
- 网上超市购物管理系统C++源代码
- Visual C++网络高级编程pdf+源代码
评论
共有 条评论