




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)字圖像處理集中實(shí)習(xí)指導(dǎo)書(shū)本文基于VC+6.0開(kāi)發(fā)環(huán)境,介紹數(shù)字圖像處理的基本操作和處理。一、工程的建立1 運(yùn)行 Microsoft Visual C+ 程序,進(jìn)入 VC+主界面。2、 單擊“ File ”菜單,選擇“ NeW'來(lái)新建,在出現(xiàn)的對(duì)話(huà)框中選擇Project,并選擇“ MFC AppWizardexe ”,表示建立一個(gè)MFC應(yīng)用向?qū)еС值墓こ涛募H缓笤谟疫呡斎牍こ堂Q(chēng)(本文為“ B”為例)和該工程存儲(chǔ)地址,工程名要求為4位數(shù)字,如某同學(xué)是 3班,學(xué)號(hào)為4,則工程命名為“ 0304”,輸入完畢后單擊“ 0K'。3、下面的六個(gè)步驟中,前五個(gè)選擇默認(rèn),第六個(gè)步驟中,將視
2、圖類(lèi)的基類(lèi)更改為 CSrollView 類(lèi),然后點(diǎn)擊完成。通過(guò)這些步驟就可以建立一個(gè)Win dows風(fēng)格的工程,這個(gè)工程也是今后進(jìn)行VC圖像處理的基礎(chǔ)。點(diǎn)擊編譯、連接,沒(méi)有錯(cuò)誤和警告,然后運(yùn)行,會(huì)出現(xiàn)一個(gè)應(yīng)用程序界面,界面 具有文件、編輯、查看、窗口和幫助這些菜單,點(diǎn)擊其子菜單,發(fā)現(xiàn)程序什么也沒(méi)執(zhí)行,這 需要我們?yōu)樗尤胂嚓P(guān)的功能。二、加載位圖類(lèi)1將已經(jīng)寫(xiě)好的位圖類(lèi)文件Dib.h和Dib.cpp拷貝到工程文件夾的根目錄下,點(diǎn)擊主菜單Project,選擇Add to Project 下的Files,然后選擇位圖類(lèi)的頭文件和cpp文件,這時(shí),該視圖類(lèi)就加到工程中了,在左邊項(xiàng)目工作區(qū)的 ClassV
3、iew中就可以看到該類(lèi)的列表。展開(kāi)每個(gè)類(lèi),可看到每個(gè)類(lèi)的變量和函數(shù)。2、編譯、連接無(wú)錯(cuò)誤后,可以運(yùn)行。三、讀寫(xiě)位圖1在視圖類(lèi)的cpp文件中包含dib.h頭文件,并生成一個(gè)CDib對(duì)象:CDib dib;2、 在視圖類(lèi)頭文件的構(gòu)造函數(shù)中加入3個(gè)成員變量如下:BYTE *m_pBitmap;DWORD m_dwHeight, m_dwWidth;WORD m_flag;分別表示數(shù)據(jù)指針、圖像的高度、圖像的寬度和圖像的類(lèi)型。在析構(gòu)函數(shù)中加入 if (m_pBitmap) delete m_pBitmap;3、 添加“打開(kāi)”消息響應(yīng)函數(shù)??捎谩癈trl+W ”打開(kāi)類(lèi)向?qū)?duì)話(huà)框,選擇視圖類(lèi)中的打開(kāi) 文件
4、ID號(hào),選擇COMMAN命令類(lèi)型,點(diǎn)擊“ Add Function ”按鈕,選擇默認(rèn)的函數(shù)名,進(jìn) 入該函數(shù),鍵入如下代碼行,進(jìn)行讀圖像:CStri ng strFileName;staticchar szFilter="BMP 文件(*.bmp)|*.bmp;CFileDialog dlg(TRUE, "bmp", NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);if (dlg.DoModal()!=IDOK) return ;strFileName=dlg.GetPathName();(this -&
5、gt;GetDocument()->SetTitle(strFileName);if (!dib.LoadBmpFile(strFileName,m_pBitmap,m_dwHeight,m_dwWidth,m_flag)return ;Invalidate( true );4、在視圖類(lèi)的 On Draw函數(shù)中加如下代碼顯示圖像:RECT rectDoc;GetClie ntRect(&rectDoc);CSize pageSize(rectDoc.right, rectDoc.bottom);CSize lin eSize(100,1);CSize docSize(0,0);R
6、ECT rect;GetClie ntRect(& rect);BYTE *pImageDisp = NULL;BITMAPINFO *pBmp Info = NULL;/設(shè)置在指定設(shè)備容中(顯卡存)的拉伸模式pDC->SetStretchBltMode(COLORONCOLOR);if (m_pBitmap)dib.Tra nsToBmp(m_dwHeight, m_dwWidth, m_pBitmap, pImageDisp, m_flag);dib.CreateBITMAPINFO(pBmpl nfo, m_dwHeight, m_dwWidth, m_flag);/拷貝存
7、數(shù)據(jù)到顯示器StretchDIBits(pDC->GetSafeHdc(),rect .left, rect.top,m_dwWidth, m_dwHeight,0,0,m_dwWidth, m_dwHeight,pImageDisp,pBmpI nfo,DIB_RGB_COLORS,SRCCOPY);docSize.cx = rectDoc.left + m_dwWidth;docSize.cy = rectDoc.top + m_dwHeight;SetScrollSizes(MM_TEXT,docSize,pageSize,li neSize);if (pImageDisp) de
8、lete pImageDisp;if (pBmpInfo) delete pBmpInfo;5、為視圖類(lèi)添加“保存”消息響應(yīng)函數(shù),進(jìn)行文件存儲(chǔ)。添加的代碼如下:CStri ng strFileName;staticchar szFilter = "BMP文件(*.bmp)|*.bmp;CFileDialog dlg( false , "bmp", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);if (dlg.DoModal() != IDOK) return ;strFileName = dlg.G
9、etPathName();if (!dib.WriteBmpFile(strFileName, m_pBitmap, m_dwHeight, m_dwWidth, m_flag)return ;6、 編譯、連接,運(yùn)行后,就可以進(jìn)行讀、顯示和存儲(chǔ)BMP圖像了。四、制作對(duì)話(huà)框1修改對(duì)話(huà)框的屬性。右擊對(duì)話(huà)框空白處,選擇屬性,修改對(duì)話(huà)框的ID和Caption。2、在項(xiàng)目工作區(qū)中選擇 Resource,右擊Dialog,選中Insert Dialog命令,這時(shí)系統(tǒng)就生成了一個(gè)對(duì)話(huà)框資源,上面有兩個(gè)按鈕。手工布置對(duì)話(huà)框:分別右擊兩個(gè)按鈕,選擇屬性,修改ID和Caption,改為“確定”和“取消”。3、添加
10、靜態(tài)文本。單擊空間工具欄上的靜態(tài)文本,放在對(duì)話(huà)框上,單擊右鍵,選擇屬性, 修改為“輸入閾值”。4、添加編輯框。在控件工具欄上選擇編輯框,放在對(duì)話(huà)框上,修改屬性。每個(gè)對(duì)話(huà)框與控件都有一個(gè)不同的ID。5、 增加對(duì)話(huà)框類(lèi)。右擊對(duì)話(huà)框的標(biāo)題欄,選擇ClassWizard,出現(xiàn)增加新類(lèi)的對(duì)話(huà)框,選擇創(chuàng)建一個(gè)新類(lèi) CYuzhi,單擊OK然后在Name中輸入新類(lèi)的名字,基類(lèi)為 CDialog,修改 該對(duì)話(huà)框的ID。這時(shí)在項(xiàng)目工作區(qū)的ClassView中可以看到一個(gè)新類(lèi) CYuzhi。6、 為CYuzhi類(lèi)增加成員變量。 進(jìn)入類(lèi)向?qū)?duì)話(huà)框,選擇Membervariables 標(biāo)簽,在CYuzhi類(lèi)中選中編輯框
11、ID,單擊Add Variable按鈕,在對(duì)話(huà)框中輸入成員變量的名字,成員變量為整型值型,單擊 0K7、為對(duì)話(huà)框上的確定按鈕定義響應(yīng)函數(shù)。在Message Maps標(biāo)簽中,選擇對(duì)話(huà)框類(lèi),選擇IDOK,在 Message中選擇BK_CLICKED單擊 Add Function 按鈕,輸入響應(yīng)函數(shù)名字。五、制作菜單1加主菜單。點(diǎn)擊工程左下端項(xiàng)目工作區(qū)的ResourceView,雙擊Menu,雙擊IDR_BTYPE雙擊空白主菜單,在屬性對(duì)話(huà)框的Caption中輸入“空間域”。2、加子菜單。雙擊位圖操作下的空白菜單,建立“二值化”子菜單,分別為其設(shè)置ID (如可以為ID_BINARY)。菜單項(xiàng)目輸入完
12、畢后,可以編譯連接工程,發(fā)現(xiàn)建立的菜單是灰色的,不能使用。這是因?yàn)檫€沒(méi)有定義它們的功能。3、 添加菜單響應(yīng)函數(shù)。單擊VC+主菜單 View下的ClassWizard,單擊對(duì)話(huà)框中的 MessageMaps標(biāo)簽,選擇工程中的視圖類(lèi),選中直方圖ID_BINARY,選中Message中的COMMAND單擊Add Fun ction按鈕,在對(duì)話(huà)框中給出默認(rèn)的函數(shù)名On Bi nary,點(diǎn)擊OK。此函數(shù)就自動(dòng)加入到視圖類(lèi)中了,單擊Edit Code,就進(jìn)入該函數(shù)的編輯界面。該函數(shù)位于視圖類(lèi)。4、 在視圖類(lèi)的頭文件頂部包含Yuzhi頭文件,在 OnBinary()函數(shù)中增加如下代碼:CYuzhi dlg;dlg.DoModal();UpdateData(TRUE);if (m_flag = 24)AfxMessageBox("只處理 8位圖像! ”);return ;BYTE *pData = new BYTEm_dwWidth*m_dwHeight;BYTE *pOld = pData;memcpy(pData, m_pBitmap, m_dwWidth*m_dwHeight);DWORD i,j;for (i=O;i<m_dwHeight;i+)for (j=O;j<m_dwWidth;j+)if (*pData >
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第三單元第一節(jié)《科學(xué)合理使用網(wǎng)絡(luò)》教學(xué)設(shè)計(jì) 2024-2025學(xué)年川教版(2024)初中信息技術(shù)七年級(jí)上冊(cè)
- 活動(dòng)課《技術(shù)進(jìn)步與社會(huì)生活》教學(xué)設(shè)計(jì)-2023-2024學(xué)年高二歷史統(tǒng)編版(2019)選擇性必修2經(jīng)濟(jì)與社會(huì)生活
- 面向計(jì)算思維培養(yǎng)的項(xiàng)目式教學(xué)設(shè)計(jì)與應(yīng)用研究
- 貝殼收藏交易合同
- 第二單元 主題活動(dòng)三《溫暖送給身邊人》(教學(xué)設(shè)計(jì))-2023-2024學(xué)年三年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)內(nèi)蒙古版
- Unit 5 Fun Clubs Reading plus Alices Vlog My Drama Club 教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版英語(yǔ)七年級(jí)上冊(cè)
- 人教版八年級(jí)歷史與社會(huì)下冊(cè)第八單元第三課第一框 維新變法運(yùn)動(dòng) 教學(xué)設(shè)計(jì)
- 第11課 古代日本(新教學(xué)設(shè)計(jì))2023-2024學(xué)年九年級(jí)上冊(cè)歷史(部編版)
- 教科版高中信息技術(shù)必修教學(xué)設(shè)計(jì)-2.2 因特網(wǎng)信息的查找-
- 全國(guó)青島版初中信息技術(shù)第三冊(cè)第二單元第10課《圖書(shū)小管家》教學(xué)設(shè)計(jì)
- 祖國(guó)版圖知識(shí)主題班會(huì)
- 第二十一章會(huì)陰部美容手術(shù)講解
- 2024年金華金開(kāi)招商招才服務(wù)集團(tuán)有限公司招聘筆試真題
- 2025年度iPhone手機(jī)租賃與虛擬現(xiàn)實(shí)體驗(yàn)合同3篇
- 2025年度消防工程安全防護(hù)措施設(shè)計(jì)固定總價(jià)合同范本3篇
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調(diào)研考試(一模)語(yǔ)文試卷(含答案)
- 食品企業(yè)危機(jī)管理應(yīng)對(duì)方案
- 《無(wú)創(chuàng)呼吸機(jī)護(hù)理》課件
- 2024年濟(jì)南廣播電視臺(tái)招聘工作人員筆試真題
- 2025年臨床醫(yī)師定期考核必考復(fù)習(xí)題庫(kù)及答案(1060題)
- 市場(chǎng)消防安全課件
評(píng)論
0/150
提交評(píng)論