




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
*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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 羊只轉讓協議書
- 電費結算協議書
- 簽分手費協議書
- 第三終端協議書
- 退稅墊資協議書
- 送教結對協議書
- 藥店共建協議書
- 美油貿易協議書
- 電子廠用工合同協議書
- 茶葉團購協議書
- 【中考真題匯編】專項查漏補缺現代文閱讀-2025年中考語文(含答案)
- 2025年綠色建筑與可持續發展考試試題及答案
- 手表質押借款協議書
- 湖北省八校聯考2025屆高三三模語文試題(含答案)
- 2025四川西南發展控股集團有限公司招聘工作人員65人筆試參考題庫附帶答案詳解
- (三模)溫州市2025屆高三第三次適應性考試英語試卷(含答案)
- 光伏高空作業施工方案
- 2025年江蘇省泰州市姜堰區中考一模歷史試題(含答案)
- 湖北省武漢市2025屆高中畢業生四月調研考試數學試卷及答案(武漢四調)
- 2025年2月27日四川省公務員面試真題及答案解析(綜合管理崗)
- 微生物實驗室生物安全意外事件處理報告制度
評論
0/150
提交評論