VC開發(fā)灰度位圖處理

VC開發(fā)灰度位圖處理

ID:37712264

大?。?1.00 KB

頁數(shù):8頁

時(shí)間:2019-05-29

VC開發(fā)灰度位圖處理_第1頁
VC開發(fā)灰度位圖處理_第2頁
VC開發(fā)灰度位圖處理_第3頁
VC開發(fā)灰度位圖處理_第4頁
VC開發(fā)灰度位圖處理_第5頁
資源描述:

《VC開發(fā)灰度位圖處理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、VisualC++6.0開發(fā)灰度位圖處理9/10/20019:41:14··劉濤蔣建國··yesky圖像處理技術(shù)已經(jīng)類生活的各個(gè)領(lǐng)域并得到越來越多的應(yīng)用,圖像處理所涉及的圖像格式有很多種,如TIF、JEMP、BMP等等,工程應(yīng)用中經(jīng)常要處理256級(jí)的灰度BMP圖像,如通過黑白采集卡采集得到的圖像。BMP灰度圖像作為Windows環(huán)境下主要的圖像格式之一,以其格式簡單,適應(yīng)性強(qiáng)而倍受歡迎。在進(jìn)行圖像處理時(shí),操作圖像中的像素值就要得到圖像陣列;經(jīng)過處理后的圖像的像素值存儲(chǔ)起來;顯示圖像時(shí)要正確實(shí)現(xiàn)調(diào)色板,結(jié)合這些問題,文章針對(duì)性的給出了操作灰度

2、BMP圖像時(shí)的部分函數(shù)實(shí)現(xiàn)代碼及注釋。  一、BMP位圖操作  BMP位圖包括位圖文件頭結(jié)構(gòu)BITMAPFILEHEADER、位圖信息頭結(jié)構(gòu)BITMAPINFOHEADER、位圖顏色表RGBQUAD和位圖像素?cái)?shù)據(jù)四部分。處理位圖時(shí)要根據(jù)文件的這些結(jié)構(gòu)得到位圖文件大小、位圖的寬、高、實(shí)現(xiàn)調(diào)色板、得到位圖像素值等等。對(duì)于256級(jí)灰度圖像每個(gè)像素用8bit表示顏色的索引值,這里要注意的一點(diǎn)是在BMP位圖中,位圖的每行像素值要填充到一個(gè)四字節(jié)邊界,即位圖每行所占的存儲(chǔ)長度為四字節(jié)的倍數(shù),不足時(shí)將多余位用0填充?! ≡谔幚韴D像應(yīng)用程序的文檔類(Cdi

3、bDoc.h)中聲明如下宏及公有變量:  #defineWIDTHBYTES(bits)(((bits)+31)/32*4)//計(jì)算圖像每行象素所占的字節(jié)數(shù)目  HANDLEm_hDIB;//存放位圖數(shù)據(jù)的句柄  CPalette*m_palDIB;//指向調(diào)色板Cpalette類的指針  CSizem_sizeDoc;file://初始化視圖的尺寸  1、讀取灰度BMP位圖  根據(jù)BMP位圖文件的結(jié)構(gòu),操作BMP位圖文件讀入數(shù)據(jù),重載了文擋類的OnOpenDocument函數(shù)如下:BOOLCDibDoc::OnOpenDocument(L

4、PCTSTRlpszPathName){ CFilefile; CFileExceptionfe; if(!file.Open(lpszPathName,CFile::modeRead

5、CFile::shareDenyWrite,&fe)) {  AfxMessageBox("文件打不開");  return8FALSE;  }//打開文件 DeleteContents();//刪除文擋 BeginWaitCursor(); BITMAPFILEHEADERbmfHeader;//定義位圖文件頭結(jié)構(gòu) DWORDdwBitsSize; HAN

6、DLEhDIB; LPSTRpDIB; BITMAPINFOHEADER*bmhdr;//指向位圖信息頭結(jié)構(gòu)的指針 dwBitsSize=file.GetLength();//得到文件長度 if(file.Read((LPSTR)&bmfHeader,sizeof(bmfHeader))!=             sizeof(bmfHeader))  returnFALSE;  if(bmfHeader.bfType!=0x4d42)file://檢查是否為BMP文件   returnFALSE;   hDIB=(HANDLE)::Gl

7、obalAlloc(GMEM_MOVEABLE

8、                GMEM_ZEROINIT,dwBitsSize);   file://申請(qǐng)緩沖區(qū)   if(hDIB==0)   {    returnFALSE;   }   pDIB=(LPSTR)::GlobalLock((HGLOBAL)hDIB);   file://得到申請(qǐng)的緩沖區(qū)的指針   if(file.ReadHuge(pDIB,dwBitsSize-sizeof(BITMAPFILEHEADER))!=     dwBitsSize-sizeof(BITM

9、APFILEHEADER))   {    ::GlobalUnlock((HGLOBAL)hDIB);    hDIB=NULL;    returnFALSE;    }//讀數(shù)據(jù),包括位圖信息、位圖顏色表、圖像像素的灰度值   bmhdr=(BITMAPINFOHEADER*)pDIB;//為指向位圖信息頭結(jié)構(gòu)的指針付值   ::GlobalUnlock((HGLOBAL)hDIB);   if((*bmhdr).biBitCount!=8)file://驗(yàn)證是否為8bit位圖    returnFALSE;    m_hDIB=hD

10、IB;    InitDIBData();    file://自定義函數(shù),根據(jù)讀入的數(shù)據(jù)得到位圖的寬、高、顏色表    file://來得到初始化視的尺寸、生成調(diào)色板    E

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。