版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*1图像处理程序设计
C语言有关问题
图像显示预备知识
图像处理程序设计*2C语言有关问题C语言磁盘文件操作
FILE*__stream 定义文件变量指针
fopen(constchar*__path,constchar*__mode);
fopen 打开文件
constchar*__path 文件名 如”test.txt”
constchar*__mode 文件属性 如
”r” 只读文本文件
”w” 只写文本文件
”rb” 只读二进制文件
”wb” 只写二进制文件
”r+” 可读写文本文件
”w+” 创建可读写文本文件
”rb+” 可读写二进制文件
”wb+” 创建可读写二进制文件
fclose(FILE*__stream);
fclose 关闭文件
FILE*__stream 文件变量指针
*3C语言有关问题C语言磁盘文件操作
fgetc(FILE*__stream);
fgetc 从文件变量指针当前位置取字符
FILE*__stream 文件变量指针
fgets(char*__s,int__n,FILE*__stream);
fgets 从文件变量指针当前位置取字符串
char*__s 串存入指针
int__n 串的字符数
FILE*__stream 文件变量指针
fputc(int__c,FILE*__stream);
fputc 在文件变量指针当前位置写字符
int__c 写入的字符值
FILE*__stream 文件变量指针
fputs(constchar*__s,FILE*__stream);
fputs 在文件变量指针当前位置写字符串
constchar*__s 写入字符串指针
FILE*__stream 文件变量指针*4C语言有关问题C语言磁盘文件操作
fread(void*__ptr,size_t__size,size_t__n,FILE*__stream);
fread 从文件变量指针当前位置成块读入
void*__ptr 读入缓冲区指针
size_t__size 字段长度
size_t__n 字段数
FILE*__stream 文件变量指针
fwrite(void*__ptr,size_t__size,size_t__n,FILE*__stream);
fwrite 在文件变量指针当前位置成块写
void*__ptr 被写块缓冲区指针
size_t__size 字段长度
size_t__n 字段数
FILE*_stream 文件变量指针
fseek(FILE*__stream,long__offset,int__whence);
fseek 随机访问的文件指针
FILE*__stream 文件变量指针
long__offset 偏移量
int__whence 起始位置
SEEK_SET 文件头
SEEK_CUR 当前位置
SEEK_END 文件尾*5C语言有关问题CPU寄存器结构
字型寄存器结构定义
structWORDREGS{
unsignedintax,bx,cx,dx,si,di,cflag,flags;
};
字节型寄存器结构定义
structBYTEREGS{
unsignedcharal,ah,bl,bh,cl,ch,dl,dh;
};
寄存器联合定义
unionREGS{
structWORDREGSx;
structBYTEREGSh;
};
段寄存器结构定义
structSREGS{
unsignedintes;
unsignedintcs;
unsignedintss;
unsignedintds;
};*6C语言有关问题 内存访问
poke(unsigned__segment,unsigned__offset,int__value);
poke 向指定内存写入一个字
unsigned__segment 指定内存的段地址
unsigned__offset 指定内存在段内的偏移量
int__value 写入的字
pokeb(unsigned__segment,unsigned__offset,char__value);
pokeb 向指定内存写入一个字节
unsigned__segment 指定内存的段地址
unsigned__offset 指定内存在段内的偏移量
char__value 写入的字节*7C语言有关问题 端口访问
outport(int__portid,int__value);
outport 将一个字输出到指定端口
int__portid 端口号
int__value 输出的值
outportb(int__portid,unsignedchar__value);
outportb 将一个字节输出到指定端口
int__portid 端口号
unsignedchar__value 输出的值
*8BIOS中断调用
int86(intint_num,unionRIGS*in_rigs,unionREGSout_regs)
int86 intel86系列BIOS中断调用
intint_num 中断调用号
unionRIGS*in_rigs 输入寄存器
unionREGSout_regs) 输出寄存器*9BIOS中断调用
中断调用号 功能
05H 屏幕拷贝
10H 显示器控制
11H 确定设备
12H 确定内存容量
13H 磁盘IO
14H RS232接口IO
15H 磁带IO、AT机扩充服务
16H 键盘IO
17H 打印机IO
18H ROMBASIC
19H 引导装入程序BOOTRESTART
1AH 实时时钟
1BH 键盘终止地址
1CH 定时器信号
1EH 软盘参数表
1FH 图形字符扩展表
41H 硬盘参数表
46H 硬盘参数表
*10BIOS中断调用
中断10H
AH寄存器值 功能
00H 设置方式
01H 设置光标类型
02H 设置光标位置
03H 读出光标位置
04H 读出光笔位置
05H 设置当前显示页
06H 当前显示页上滚
07H 当前显示页下滚
08H 读出字符和属性
09H 写入字符和属性
0AH 写入字符
0BH 设置彩色调色板
0CH 写入点
0DH 读出点
0EH 以电传方式写入字符
0FH 读出当前显示方式
10H 彩色寄存器控制
13H 写入字符串*11BIOS中断调用
中断调用:INT10H,功能号:AH=0H,显示器显示模式设定
子功能号: 功能
(AL=显示模式号) 类型 彩色数目 分辨率
00H、01H 文字 16 40×25字符,320×200
02H、03H 文字 16 80×25字符,640×200
04H、05H 图形 4 40×25字符,320×200
06H 图形 2 80×25字符,640×200
07H 文字 2 80×25字符,720×350
0DH 图形 16 40×25字符,320×200
0EH 图形 16 80×25字符,640×200
0FH 图形 2 80×25字符,640×350
10H 图形 16 80×25字符,640×350
11H 图形 2 80×30字符,640×480
12H 图形 16 80×30字符,640×480
13H 图形 256 40×25字符,320×200
5BH 图形 16 100×75字符,800×600
5CH 图形 256 80×25字符,640×480
5DH 图形 256 80×30字符,640×480
5EH 图形 256 100×75字符,800×600
5FH 图形 16 128×48字符,1024×768
60H 图形 4 128×48字符,1024×768
61H 图形 16 96×64字符,1024×768
62H 图形 256 128×48字符,1024×768
输入参数:AH=0H;AL=模式号;返回值:无;*12BIOS中断调用
中断调用:INT10H,功能号:AH=0CH,画点
输入参数:AH=0CH,AL=象素值,BH=页面号,CX=象素列号(横坐标),DX=象素行号(纵坐
标);
返回值:无;
中断调用:INT10H,功能号:AH=10H,彩色寄存器-调色板设置
子功能号AL= 功能
00H 设置单个调色寄存器
01H 设置屏幕显示区边框彩色
02H 设置全部调色寄存器
03H 闪烁/加亮属性选择
07H 读单个调色寄存器
08H 读边框彩色寄存器
09H 读全部调色寄存器
10H 设置单个彩色寄存器
12H 设置一组彩色寄存器
13H 选择彩色页面
15H 读单个彩色寄存器
17H 读一组彩色寄存器
1AH 读彩色表现行页面号
1BH 彩色转换为灰度
中断调用:INT10H,功能号:AH=0FH,读取当前显示模式
输入参数:无;
返回值: AL=当前显示模式;AH=每行字符数;BH=当前屏幕上的页面数;*13BIOS中断调用
unsignedcharset_SVGA_mode(intvmode)
{unionREGSr;
r.h.ah=0;
r.h.al=vmode;
int86(0x10,&r,&r);
return(0);
}
unsignedintget_SVGA_mode()
{unionREGSr;
r.h.ah=0x0f;
int86(0x10,&r,&r);
return(r.h.al);
}*14图像显示预备知识
标准图形模式
模式号 显示卡 分辨率 颜色
0x04 CGA/CGE400/GWCH 320×200 4
0x05 EGA 4/64k
MCGA/VGA 4/256k
CEGA 4/64
CNGA 4灰度
0x06 CGA/CGE400/GWCH/MCGA 640×200 2
EGA 2/64k
MCGA/VGA 2/256k
CEGA 2/64
0x0d EGA、CEGA 320×200 16/64
VGA 16/256k
0x0e EGA、CEGA 640×200 16/64
VGA 16/256k
0x0f EGA、CEGA、VGA 640×350 单色
0x10 EGA、CEGA 640×350 16/64
VGA 16/256k
0x11 MCGA、VGA 640×480 2/256k
CEGA 2/64
0x12 VGA 640×480 16/256k
CEGA 16/64*15图像显示预备知识
标准图形模式
模式号 分辨率 显示卡 颜色
0x42 640×400CGE400 16
- 640×400HGC 2
0x13 320×200VGA 256
- 720×348VGA 256
- 640×400VGA 256
- 640×480VGA 16
- 800×600VGA 256
- 1024×768VGA 16
- 1024×768VGA 4
- 1024×768VGA 256
模式号空缺是因为该模式号随VGA的制造厂商不同而不同。*16图像显示预备知识 bmp文件处理
位图文件头BITMAPFILEHEADER
位图信息头BITMAPINFOHEADER
调色板Palette
实际的位图数据ImageDate
位图文件信息头
TypedefstructtagBITMAPFILEHEADER{
WORDbfType; //文件类型,必须是0x424D,串“BM”
DWORDbfSize; //文件大小
WORDbfReserved1; //保留字
WORDbfReserved2; //保留字
DWORDbfOffBits; //为从文件头到位图数据的偏移字节数
}BITMAPFILEHEADER;
长度为14个字节
WORD为无符号16位整数,DWORD为无符号32位整数*17图像显示预备知识 bmp文件处理
位图信息头BITMAPINFOHEADER
TypedefstructtagBITMAPINFOHEADER{
DWORDbiSize; //指定这个结构的长度,为40
LONGbiWidth;//图像的宽度,单位是像素
LONGbiHeight;//指定图像的高度,单位是像素
WORDbiPlanes;//必须是1
WORDbiBitCount;//表示颜色时要用到的位数,8(256色图)
DWORDbiConpression;//位图是否压缩
DWORDbiSizeImage;//位图数据占用的字节数
LONGbiXPelsPerMeter;//水平分辨率,每米的像素个数
LONGbiYPelsPerMeter;//垂直分辨率,每米的像素个数
DWORDbiClrUsed;//图像实际用到的颜色数
DWORDbiClrImportant;//重要的颜色数
}BITMAPINFOHEADER;
这个结构的长度是固定的,为40个字节
LONG为32位整数*18图像显示预备知识 bmp文件处理
调色板Palette
typedefstructtagRGBQUAD{
BYTErgbBlue; //该颜色的蓝色分量
BYTErgbGreen; //该颜色的绿色分量
BYTErgbRed; //该颜色的红色分量
BYTErgbReserved;//保留值
}RGBQUAD;
图像数据
该象素颜色在调色板中的索引值。
对于256色位图,一个字节表示1个象素。
对于真彩色图,图像数据就是实际的R、G、B值。
注意:
(1) 每一行的字节数必须是4的整倍数,否则需补齐。
(2) .BMP文件的数据是从下到上,从左到右显示的。
从文件中最先读到的是图像最下面一行的左边第一个象素。
*19图像显示预备知识 bmp文件处理
256色BMP文件
位置
0~ 位图文件头BITMAPFILEHEADER
14个字节
14~ 位图信息头BITMAPINFOHEADER
40个字节
54~ 调色板Palette
256×4=1024个字节
1078~ 实际的位图数据ImageDateWidth×Height*20*21图像显示预备知识
bmp文件处理
实际的调色板在显卡内,调色板可以通过BIOS调用操作,也可以直接操作。
直接操作访问的端口号为0x3c8、0x3c9。
0x3c8调色板指针
0x3c9调色板数据寄存器
i文件中调色板位置
outportb(0x3c8,i);
outportb(0x3c9,r>>2);
outportb(0x3c9,g>>2);
outportb(0x3c9,b>>2);
r,g,b各6位,64×64×64=262144色*22图像显示
#include"dos.h"
#include"stdio.h"
unsignedcharset_SVGA_mode(intvmode)
{unionREGSr;
r.h.ah=0;
r.h.al=vmode;
int86(0x10,&r,&r);
return(0);
}
unsignedintget_SVGA_mode()
{unionREGSr;
r.h.ah=0x0f;
int86(0x10,&r,&r);
return(r.h.al);
}*23图像显示
main()
{charbuffer[640];
inti,j,k,n,r,g,b,savemode;
longposition,width,length;
FILE*fp;
charhead[2000];
puts("Open256bitmap!");
puts("Inputfilename:");
gets(buffer);
if((fp=fopen(buffer,"rb"))==NULL)
{printf("Can'topenfile:%s",buffer);
return(0);
}
fseek(fp,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《厂用变压器的选择》课件
- 2024年度工厂场地租赁合同模板
- 2024年度特许经营权及商标转让合同
- 高等数学导数公式大全课件
- 荷花淀说课课件
- 《低压厂用电》课件
- 课件属于什么教具
- 2024年度环境监测系统开发合同
- 《关键字建模》课件
- 2024年度企业办公场所租赁合同
- 口腔组织病理学教学课件:牙源性肿瘤
- 通用模板-封条模板
- 电感耦合等离子体质谱仪分析(水质)原始记录
- 高考冲刺主题班会——勇往直前无畏风雨课件(17张PPT)
- 种群的数量特征——第2课时
- 植物源农药的提取分离和结构鉴定基础
- 正弦交流电路相量
- 企业盈利能力分析——以青岛啤酒股份有限公司为例
- 输尿管结石病人护理查房
- 下肢缺血分级
- 初中生物总复习知识概要
评论
0/150
提交评论