资源简介
Visual+C++ 图像浏览器 二值化 直方图 等等
代码片段和文件信息
#include “stdio.h“
#include “Windows.h“
//几个全局变量,存放读入图像的位图数据、宽、高、颜色表及每像素所占位数(比特)
//此处定义全局变量主要为了后面的图像数据访问及图像存储作准备
unsigned char *pBmpBuf;//读入图像数据的指针
int bmpWidth;//图像的宽
int bmpHeight;//图像的高
RGBQUAD *pColorTable;//颜色表指针
int biBitCount;//图像类型
/***********************************************************************
* 函数名称:
* readBmp()
*
*函数参数:
* char *bmpName -文件名字及路径
*
*返回值:
* 0为失败1为成功
*
*说明:给定一个图像文件名及其路径,读图像的位图数据、宽、高、颜色表及每像素
* 位数等数据进内存存放在相应的全局变量中
***********************************************************************/
bool readBmp(char *bmpName)
{
//二进制读方式打开指定的图像文件
FILE *fp=fopen(bmpName“rb“);
if(fp==0) return 0;
//跳过位图文件头结构BITMAPFILEHEADER
fseek(fp sizeof(BITMAPFILEHEADER)0);
//定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中
BITMAPINFOHEADER head;
fread(&head sizeof(BITMAPINFOHEADER) 1fp);
//获取图像宽、高、每像素所占位数等信息
bmpWidth = head.biWidth;
bmpHeight = head.biHeight;
biBitCount = head.biBitCount;
//定义变量,计算图像每行像素所占的字节数(必须是4的倍数)
int lineByte=(bmpWidth * biBitCount/8+3)/4*4;
//灰度图像有颜色表,且颜色表表项为256
if(biBitCount==8){
//申请颜色表所需要的空间,读颜色表进内存
pColorTable=new RGBQUAD[256];
fread(pColorTablesizeof(RGBQUAD)256fp);
}
//申请位图数据所需要的空间,读位图数据进内存
pBmpBuf=new unsigned char[lineByte * bmpHeight];
fread(pBmpBuf1lineByte * bmpHeightfp);
//关闭文件
fclose(fp);
return 1;
}
/***********************************************************************
* 函数名称:
* saveBmp()
*
*函数参数:
* char *bmpName -文件名字及路径
* unsigned char *imgBuf -待存盘的位图数据
* int width -像素为单位待存盘位图的宽
* int height -像素为单位待存盘位图高
* int biBitCount -每像素所占位数
* RGBQUAD *pColorTable -颜色表指针
*返回值:
* 0为失败1为成功
*
*说明:给定一个图像位图数据、宽、高、颜色表指针及每像素所占的位数等信息,
* 将其写到指定文件中
***********************************************************************/
bool saveBmp(char *bmpName unsigned char *imgBuf int width int height
int biBitCount RGBQUAD *pColorTable)
{
//如果位图数据指针为0则没有数据传入函数返回
if(!imgBuf)
return 0;
//颜色表大小以字节为单位灰度图像颜色表为1024字节彩色图像颜色表大小为0
int colorTablesize=0;
if(biBitCount==8)
colorTablesize=1024;
//待存储图像数据每行字节数为4的倍数
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是图像文件前三个部分所需空间之和
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;
hea
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 230 2008-07-02 13:09 光盘文件\Readme.txt
..A..H. 19968 2008-06-21 04:00 光盘文件\各章测试图\第一章\Thumbs.db
文件 350456 2007-09-21 14:31 光盘文件\各章测试图\第一章\图1-10数据修改后图像对比 a.bmp
文件 810056 2007-09-21 09:34 光盘文件\各章测试图\第一章\故宫角楼.bmp
文件 117880 2007-09-21 14:32 光盘文件\各章测试图\第一章\狗.bmp
文件 1931856 2007-09-21 14:51 光盘文件\各章测试图\第一章\鸟.bmp
..A..H. 25088 2008-06-21 04:00 光盘文件\各章测试图\第七章\Thumbs.db
文件 196664 2007-06-18 15:21 光盘文件\各章测试图\第七章\图7-12a.bmp
文件 263222 2007-06-21 20:43 光盘文件\各章测试图\第七章\图7-13a.bmp
文件 196662 2008-06-10 10:44 光盘文件\各章测试图\第七章\图7-14a.bmp
文件 77936 2007-04-04 17:09 光盘文件\各章测试图\第七章\图7-2.bmp
文件 66616 2007-06-18 15:30 光盘文件\各章测试图\第七章\图7-3a_8bit.bmp
文件 66614 2007-03-26 23:37 光盘文件\各章测试图\第七章\图7-5a.bmp
文件 6465 2008-06-10 09:24 光盘文件\各章测试图\第七章\图7-6a.jpg
文件 139896 2007-06-21 20:25 光盘文件\各章测试图\第七章\图7-8a.bmp
..A..H. 17920 2008-06-21 04:00 光盘文件\各章测试图\第三章\Thumbs.db
文件 309656 2008-01-18 14:55 光盘文件\各章测试图\第三章\图3-5图像平移效果示意图 a.bmp
文件 375656 2008-06-07 04:41 光盘文件\各章测试图\第三章\图3-6图像转置效果示意图 a.bmp
文件 309656 2008-06-07 04:41 光盘文件\各章测试图\第三章\图3-7 3-14 a.bmp
..A..H. 47616 2008-06-21 04:00 光盘文件\各章测试图\第九章\Thumbs.db
文件 17464 2005-03-24 21:37 光盘文件\各章测试图\第九章\图9-5a.bmp
文件 17464 2005-03-24 17:37 光盘文件\各章测试图\第九章\图9-5b.bmp
..A..H. 22528 2008-06-21 04:00 光盘文件\各章测试图\第二章\Thumbs.db
文件 320456 2008-06-07 04:40 光盘文件\各章测试图\第二章\图2-13 对数拉伸和指数拉伸效果图 a.bmp
文件 121080 2008-06-07 04:39 光盘文件\各章测试图\第二章\图2-16直方图均衡前后图像及其直方图变化对比图 a.bmp
文件 1360856 2008-06-07 04:40 光盘文件\各章测试图\第二章\图2-5 负相操作结果 a.bmp
文件 315656 2008-06-07 04:40 光盘文件\各章测试图\第二章\图2-9 线性拉伸运行结果 a.bmp
文件 340856 2008-01-18 14:30 光盘文件\各章测试图\第二章\鼠.bmp
文件 66614 2007-12-12 14:41 光盘文件\各章测试图\第五章\5-2flower256x256.bmp
文件 66614 2007-12-12 14:48 光盘文件\各章测试图\第五章\5-2flower椒盐噪声.bmp
............此处省略375个文件信息
相关资源
- Visual+C++开发基于SNMP的网络管理软件(
- Visual+C++开发基于SNMP网络管理软件配套
- Visual+C++与SQL+Server开发仓库管理系统
- Visual+C+++6 0 破解版 安装直接运行
- Visual+C++MFC编程教程
- 数字图像处理与机器视觉_Visual+C++与
- Windows+Sockets网络开发——基于Visual+
- Visual+C+++车牌识别程序
- 应用Visual+C++平台的GPS精密单点定位程
- C++实战源码-随图像大小变换的图像浏
- Visual+C++项目案例导航
- Visual+C++ MFC编程实例
- Visual+c+++6.0(支持win7)
评论
共有 条评论