按关键词阅读: 处理 智能 语言 交通 图像 PC 识别 系统 02 监控 A0
。
29、 /保留值保留值 RGBQUAD;
RGBQUAD;
图像数据图像数据 该象素颜色在调色板中的索引值 。
该象素颜色在调色板中的索引值 。
对于对于256256色位图 , 一个字节表示色位图 , 一个字节表示1 1个象素 。
个象素 。
对于真彩色图 , 图像数据就是实际的对于真彩色图 , 图像数据就是实际的R R、G G、B B值 。
值 。
注意:注意: (1)(1)每一行的字节数必须是每一行的字节数必须是4 4的整倍数 , 否则需补齐 。
的整倍数 , 否则需补齐 。
(2)(2).BMP.BMP文件的数据是从下到上 , 从左到右显示的 。
文件的数据是从下到上 , 从左到右显示的 。
从文件中最先读到的是图像最下面一行的左边第一个象素 。
从文件中最 。
30、先读到的是图像最下面一行的左边第一个象素 。
15:2219 图像显示预备知识图像显示预备知识bmpbmp文件处理文件处理 256256色色BMPBMP文件文件 位置位置 0 0位图文件头位图文件头BITMAPFILEHEADERBITMAPFILEHEADER 1414个字节个字节 1414位图信息头位图信息头BITMAPINFOHEADERBITMAPINFOHEADER 4040个字节个字节 5454调色板调色板PalettePalette 2562564 410241024个字节个字节 10781078实际的位图数据实际的位图数据ImageDateWidthImageDateWidthH 。
31、eightHeight 15:2220 15:2221 图像显示预备知识图像显示预备知识 bmpbmp文件处理文件处理 实际的调色板在显卡内 , 调色板可以通过实际的调色板在显卡内 , 调色板可以通过BIOSBIOS调用操作 , 也可以直接操作 。
调用操作 , 也可以直接操作 。
直接操作访问的端口号为直接操作访问的端口号为0 x3c80 x3c8、0 x3c90 x3c9 。
0 x3c80 x3c8调色板指针调色板指针 0 x3c90 x3c9调色板数据寄存器调色板数据寄存器 i i文件中调色板位置文件中调色板位置 outportb(0 x3c8,i);
outportb(0 x3c8,i);
outportb( 。
32、0 x3c9,r2);
outportb(0 x3c9,r2);
outportb(0 x3c9,g2);
outportb(0 x3c9,g2);
outportb(0 x3c9,b2);
outportb(0 x3c9,b2);
r,g,br,g,b各各6 6位 , 位 , 646464646464262144262144色色 15:2222 图像显示图像显示 #includedos.h#includedos.h #includestdio.h#includestdio.h unsigned char set_SVGA_mode(int vmode)unsigned char set_SVGA_mode 。
33、(int vmode) union REGS r;
union REGS r;
r.h.ah=0;
r.h.ah=0;
r.h.al=vmode;
r.h.al=vmode;
int86(0 x10, int86(0 x10, return(0);
return(0);
unsigned int get_SVGA_mode()unsigned int get_SVGA_mode() union REGS r;
union REGS r;
r.h.ah=0 x0f;
r.h.ah=0 x0f;
int86(0 x10, int86(0 x10, return(r.h.al);
return(r. 。
34、h.al);
15:2223 图像显示图像显示 main()main() char buffer640;
char buffer640;
int i,j,k,n,r,g,b,savemode;
int i,j,k,n,r,g,b,savemode;
long position,width,length;
long position,width,length;
FILE FILE * *fp;
fp;
char head2000;
char head2000;
puts(Open 256 bitmap ! );
puts(Open 256 bitmap ! );
puts(Input filena 。
35、me:);
puts(Input filename:);
gets(buffer);
gets(buffer);
if(fp=fopen(buffer,rb)=NULL) if(fp=fopen(buffer,rb)=NULL) printf(Cant open file: %s,buffer);
printf(Cant open file: %s,buffer);
return(0);
return(0);
fseek(fp,0,SEEK_SET);
fseek(fp,0,SEEK_SET);
for(i=0;
i1078;
i+) for(i=0;
i1078;
i+) headi=fgetc(f 。
36、p);
headi=fgetc(fp);
15:2224 图像显示图像显示 fseek(fp,28,SEEK_SET);
fseek(fp,28,SEEK_SET);
fread( fread( if(i!=8) if(i!=8) puts(Not a 256 color bitmap!);
puts(Not a 256 color bitmap!);
fclose(fp);
fclose(fp);
exit(0);
exit(0);
fseek(fp,18,SEEK_SET);
fseek(fp,18,SEEK_SET);
fread( fread( fread( fread( savemode=g 。
37、et_SVGA_mode();
savemode=get_SVGA_mode();
set_SVGA_mode(0 x0013);
set_SVGA_mode(0 x0013);
fseek(fp,54,SEEK_SET);
fseek(fp,54,SEEK_SET);
for(i=0;
i256;
i+) for(i=0;
i2);
outportb(0 x3c9,r2);
outportb(0 x3c9,g2);
outportb(0 x3c9,g2);
outportb(0 x3c9,b2);
outportb(0 x3c9,b2);
fgetc(fp);
fgetc(fp);
15:2225 。
38、 图像显示图像显示 k=(width%4)?(4-width%4):0;
k=(width%4)?(4-width%4):0;
/ /* *(除了真彩色外 , 其他的每种颜色模式的行字节数要用数据(除了真彩色外 , 其他的每种颜色模式的行字节数要用数据“0000”补齐补齐 为为4 4的整数倍 。
此句表示如果字节数不是的整数倍 。
此句表示如果字节数不是4 4的倍数 , 则补入的倍数 , 则补入4-width%44-width%4个字个字 节的节的0000 , 如果是 , 如果是4 4的整数倍则不用补的整数倍则不用补0 0)*/ for(j=length-1;
稿源:(未知)
【傻大方】网址:/a/2021/0801/0023374305.html
标题:智能|智能交通系统02A_监控与识别_C语言图像处理( 四 )