智能交通系統(tǒng)02A-監(jiān)控與識別-C語言圖像處理_第1頁
智能交通系統(tǒng)02A-監(jiān)控與識別-C語言圖像處理_第2頁
智能交通系統(tǒng)02A-監(jiān)控與識別-C語言圖像處理_第3頁
智能交通系統(tǒng)02A-監(jiān)控與識別-C語言圖像處理_第4頁
智能交通系統(tǒng)02A-監(jiān)控與識別-C語言圖像處理_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

*1圖像處理程序設(shè)計(jì)

C語言有關(guān)問題

圖像顯示預(yù)備知識

圖像處理程序設(shè)計(jì)*2C語言有關(guān)問題C語言磁盤文件操作

FILE*__stream 定義文件變量指針

fopen(constchar*__path,constchar*__mode);

fopen 打開文件

constchar*__path 文件名 如”test.txt”

constchar*__mode 文件屬性 如

”r” 只讀文本文件

”w” 只寫文本文件

”rb” 只讀二進(jìn)制文件

”wb” 只寫二進(jìn)制文件

”r+” 可讀寫文本文件

”w+” 創(chuàng)建可讀寫文本文件

”rb+” 可讀寫二進(jìn)制文件

”wb+” 創(chuàng)建可讀寫二進(jìn)制文件

fclose(FILE*__stream);

fclose 關(guān)閉文件

FILE*__stream 文件變量指針

*3C語言有關(guān)問題C語言磁盤文件操作

fgetc(FILE*__stream);

fgetc 從文件變量指針當(dāng)前位置取字符

FILE*__stream 文件變量指針

fgets(char*__s,int__n,FILE*__stream);

fgets 從文件變量指針當(dāng)前位置取字符串

char*__s 串存入指針

int__n 串的字符數(shù)

FILE*__stream 文件變量指針

fputc(int__c,FILE*__stream);

fputc 在文件變量指針當(dāng)前位置寫字符

int__c 寫入的字符值

FILE*__stream 文件變量指針

fputs(constchar*__s,FILE*__stream);

fputs 在文件變量指針當(dāng)前位置寫字符串

constchar*__s 寫入字符串指針

FILE*__stream 文件變量指針*4C語言有關(guān)問題C語言磁盤文件操作

fread(void*__ptr,size_t__size,size_t__n,FILE*__stream);

fread 從文件變量指針當(dāng)前位置成塊讀入

void*__ptr 讀入緩沖區(qū)指針

size_t__size 字段長度

size_t__n 字段數(shù)

FILE*__stream 文件變量指針

fwrite(void*__ptr,size_t__size,size_t__n,FILE*__stream);

fwrite 在文件變量指針當(dāng)前位置成塊寫

void*__ptr 被寫塊緩沖區(qū)指針

size_t__size 字段長度

size_t__n 字段數(shù)

FILE*_stream 文件變量指針

fseek(FILE*__stream,long__offset,int__whence);

fseek 隨機(jī)訪問的文件指針

FILE*__stream 文件變量指針

long__offset 偏移量

int__whence 起始位置

SEEK_SET 文件頭

SEEK_CUR 當(dāng)前位置

SEEK_END 文件尾*5C語言有關(guān)問題CPU寄存器結(jié)構(gòu)

字型寄存器結(jié)構(gòu)定義

structWORDREGS{

unsignedintax,bx,cx,dx,si,di,cflag,flags;

};

字節(jié)型寄存器結(jié)構(gòu)定義

structBYTEREGS{

unsignedcharal,ah,bl,bh,cl,ch,dl,dh;

};

寄存器聯(lián)合定義

unionREGS{

structWORDREGSx;

structBYTEREGSh;

};

段寄存器結(jié)構(gòu)定義

structSREGS{

unsignedintes;

unsignedintcs;

unsignedintss;

unsignedintds;

};*6C語言有關(guān)問題 內(nèi)存訪問

poke(unsigned__segment,unsigned__offset,int__value);

poke 向指定內(nèi)存寫入一個(gè)字

unsigned__segment 指定內(nèi)存的段地址

unsigned__offset 指定內(nèi)存在段內(nèi)的偏移量

int__value 寫入的字

pokeb(unsigned__segment,unsigned__offset,char__value);

pokeb 向指定內(nèi)存寫入一個(gè)字節(jié)

unsigned__segment 指定內(nèi)存的段地址

unsigned__offset 指定內(nèi)存在段內(nèi)的偏移量

char__value 寫入的字節(jié)*7C語言有關(guān)問題 端口訪問

outport(int__portid,int__value);

outport 將一個(gè)字輸出到指定端口

int__portid 端口號

int__value 輸出的值

outportb(int__portid,unsignedchar__value);

outportb 將一個(gè)字節(jié)輸出到指定端口

int__portid 端口號

unsignedchar__value 輸出的值

*8BIOS中斷調(diào)用

int86(intint_num,unionRIGS*in_rigs,unionREGSout_regs)

int86 intel86系列BIOS中斷調(diào)用

intint_num 中斷調(diào)用號

unionRIGS*in_rigs 輸入寄存器

unionREGSout_regs) 輸出寄存器*9BIOS中斷調(diào)用

中斷調(diào)用號 功能

05H 屏幕拷貝

10H 顯示器控制

11H 確定設(shè)備

12H 確定內(nèi)存容量

13H 磁盤IO

14H RS232接口IO

15H 磁帶IO、AT機(jī)擴(kuò)充服務(wù)

16H 鍵盤IO

17H 打印機(jī)IO

18H ROMBASIC

19H 引導(dǎo)裝入程序BOOTRESTART

1AH 實(shí)時(shí)時(shí)鐘

1BH 鍵盤終止地址

1CH 定時(shí)器信號

1EH 軟盤參數(shù)表

1FH 圖形字符擴(kuò)展表

41H 硬盤參數(shù)表

46H 硬盤參數(shù)表

*10BIOS中斷調(diào)用

中斷10H

AH寄存器值 功能

00H 設(shè)置方式

01H 設(shè)置光標(biāo)類型

02H 設(shè)置光標(biāo)位置

03H 讀出光標(biāo)位置

04H 讀出光筆位置

05H 設(shè)置當(dāng)前顯示頁

06H 當(dāng)前顯示頁上滾

07H 當(dāng)前顯示頁下滾

08H 讀出字符和屬性

09H 寫入字符和屬性

0AH 寫入字符

0BH 設(shè)置彩色調(diào)色板

0CH 寫入點(diǎn)

0DH 讀出點(diǎn)

0EH 以電傳方式寫入字符

0FH 讀出當(dāng)前顯示方式

10H 彩色寄存器控制

13H 寫入字符串*11BIOS中斷調(diào)用

中斷調(diào)用:INT10H,功能號:AH=0H,顯示器顯示模式設(shè)定

子功能號: 功能

(AL=顯示模式號) 類型 彩色數(shù)目 分辨率

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

輸入?yún)?shù):AH=0H;AL=模式號;返回值:無;*12BIOS中斷調(diào)用

中斷調(diào)用:INT10H,功能號:AH=0CH,畫點(diǎn)

輸入?yún)?shù):AH=0CH,AL=象素值,BH=頁面號,CX=象素列號(橫坐標(biāo)),DX=象素行號(縱坐

標(biāo));

返回值:無;

中斷調(diào)用:INT10H,功能號:AH=10H,彩色寄存器-調(diào)色板設(shè)置

子功能號AL= 功能

00H 設(shè)置單個(gè)調(diào)色寄存器

01H 設(shè)置屏幕顯示區(qū)邊框彩色

02H 設(shè)置全部調(diào)色寄存器

03H 閃爍/加亮屬性選擇

07H 讀單個(gè)調(diào)色寄存器

08H 讀邊框彩色寄存器

09H 讀全部調(diào)色寄存器

10H 設(shè)置單個(gè)彩色寄存器

12H 設(shè)置一組彩色寄存器

13H 選擇彩色頁面

15H 讀單個(gè)彩色寄存器

17H 讀一組彩色寄存器

1AH 讀彩色表現(xiàn)行頁面號

1BH 彩色轉(zhuǎn)換為灰度

中斷調(diào)用:INT10H,功能號:AH=0FH,讀取當(dāng)前顯示模式

輸入?yún)?shù):無;

返回值: AL=當(dāng)前顯示模式;AH=每行字符數(shù);BH=當(dāng)前屏幕上的頁面數(shù);*13BIOS中斷調(diào)用

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圖像顯示預(yù)備知識

標(biāo)準(zhǔn)圖形模式

模式號 顯示卡 分辨率 顏色

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圖像顯示預(yù)備知識

標(biāo)準(zhǔn)圖形模式

模式號 分辨率 顯示卡 顏色

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

模式號空缺是因?yàn)樵撃J教栯SVGA的制造廠商不同而不同。*16圖像顯示預(yù)備知識 bmp文件處理

位圖文件頭BITMAPFILEHEADER

位圖信息頭BITMAPINFOHEADER

調(diào)色板Palette

實(shí)際的位圖數(shù)據(jù)ImageDate

位圖文件信息頭

TypedefstructtagBITMAPFILEHEADER{

WORDbfType; //文件類型,必須是0x424D,串“BM”

DWORDbfSize; //文件大小

WORDbfReserved1; //保留字

WORDbfReserved2; //保留字

DWORDbfOffBits; //為從文件頭到位圖數(shù)據(jù)的偏移字節(jié)數(shù)

}BITMAPFILEHEADER;

長度為14個(gè)字節(jié)

WORD為無符號16位整數(shù),DWORD為無符號32位整數(shù)*17圖像顯示預(yù)備知識 bmp文件處理

位圖信息頭BITMAPINFOHEADER

TypedefstructtagBITMAPINFOHEADER{

DWORDbiSize; //指定這個(gè)結(jié)構(gòu)的長度,為40

LONGbiWidth;//圖像的寬度,單位是像素

LONGbiHeight;//指定圖像的高度,單位是像素

WORDbiPlanes;//必須是1

WORDbiBitCount;//表示顏色時(shí)要用到的位數(shù),8(256色圖)

DWORDbiConpression;//位圖是否壓縮

DWORDbiSizeImage;//位圖數(shù)據(jù)占用的字節(jié)數(shù)

LONGbiXPelsPerMeter;//水平分辨率,每米的像素個(gè)數(shù)

LONGbiYPelsPerMeter;//垂直分辨率,每米的像素個(gè)數(shù)

DWORDbiClrUsed;//圖像實(shí)際用到的顏色數(shù)

DWORDbiClrImportant;//重要的顏色數(shù)

}BITMAPINFOHEADER;

這個(gè)結(jié)構(gòu)的長度是固定的,為40個(gè)字節(jié)

LONG為32位整數(shù)*18圖像顯示預(yù)備知識 bmp文件處理

調(diào)色板Palette

typedefstructtagRGBQUAD{

BYTErgbBlue; //該顏色的藍(lán)色分量

BYTErgbGreen; //該顏色的綠色分量

BYTErgbRed; //該顏色的紅色分量

BYTErgbReserved;//保留值

}RGBQUAD;

圖像數(shù)據(jù)

該象素顏色在調(diào)色板中的索引值。

對于256色位圖,一個(gè)字節(jié)表示1個(gè)象素。

對于真彩色圖,圖像數(shù)據(jù)就是實(shí)際的R、G、B值。

注意:

(1) 每一行的字節(jié)數(shù)必須是4的整倍數(shù),否則需補(bǔ)齊。

(2) .BMP文件的數(shù)據(jù)是從下到上,從左到右顯示的。

從文件中最先讀到的是圖像最下面一行的左邊第一個(gè)象素。

*19圖像顯示預(yù)備知識 bmp文件處理

256色BMP文件

位置

0~ 位圖文件頭BITMAPFILEHEADER

14個(gè)字節(jié)

14~ 位圖信息頭BITMAPINFOHEADER

40個(gè)字節(jié)

54~ 調(diào)色板Palette

256×4=1024個(gè)字節(jié)

1078~ 實(shí)際的位圖數(shù)據(jù)ImageDateWidth×Height*20*21圖像顯示預(yù)備知識

bmp文件處理

實(shí)際的調(diào)色板在顯卡內(nèi),調(diào)色板可以通過BIOS調(diào)用操作,也可以直接操作。

直接操作訪問的端口號為0x3c8、0x3c9。

0x3c8調(diào)色板指針

0x3c9調(diào)色板數(shù)據(jù)寄存器

i文件中調(diào)色板位置

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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論