




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 . PAGE31 / NUMPAGES31多媒體技術(shù)實(shí)驗(yàn)指導(dǎo)書(外文教材)計(jì)算機(jī)科學(xué)與工程學(xué)院數(shù)字媒體教研室2012年3月(修訂)目 錄TOC o 1-1 h z uHYPERLINK l _Toc290242387前言多媒體技術(shù)實(shí)驗(yàn)簡(jiǎn)介 PAGEREF _Toc290242387 h 3HYPERLINK l _Toc290242388實(shí)驗(yàn)一讀寫B(tài)MP圖像程序配置 PAGEREF _Toc290242388 h 5HYPERLINK l _Toc290242395實(shí)驗(yàn)二像素處理運(yùn)算 PAGEREF _Toc290242395 h 13HYPERLINK l _Toc290242410實(shí)驗(yàn)三
2、圖像壓縮編碼 PAGEREF _Toc290242410 h 16HYPERLINK l _Toc290242411實(shí)驗(yàn)四多媒體程序開發(fā)或作品創(chuàng)作 PAGEREF _Toc290242411 h 20前言 多媒體技術(shù)實(shí)驗(yàn)簡(jiǎn)介多媒體技術(shù)是利用計(jì)算機(jī)對(duì)文字、圖像、圖形、動(dòng)畫、音頻、視頻等多種信息進(jìn)行綜合處理的計(jì)算機(jī)應(yīng)用技術(shù)。多媒體軟件系統(tǒng)也可分為系統(tǒng)軟件和應(yīng)用軟件,多媒體系統(tǒng)軟件(多媒體操作系統(tǒng))可以理解為可以進(jìn)行多媒體資源管理與信息處理的操作系統(tǒng)。多媒體應(yīng)用軟件主要是一些創(chuàng)作工具或多媒體編輯工具,包括字處理軟件、繪圖軟件、圖像處理軟件、動(dòng)畫制作軟件、聲音編輯軟件以與視頻編輯軟件。由于多媒體技術(shù)涉
3、與的容非常廣泛,尤其是許多容結(jié)合具體應(yīng)用已經(jīng)獨(dú)立成課,比如與工程技術(shù)相結(jié)合的CAD,與CAI結(jié)合的課件制作,與網(wǎng)頁動(dòng)畫制作相適應(yīng)的Flash動(dòng)畫,還有三維動(dòng)畫,影視合成等容均已獨(dú)立成課。這使得傳統(tǒng)的多媒體技術(shù)實(shí)驗(yàn)以使用各種軟件為基本實(shí)驗(yàn)容變得不太合適。相反,讓學(xué)生掌握應(yīng)用計(jì)算機(jī)技術(shù)處理文字、圖像、圖形、動(dòng)畫、音頻、視頻等多種信息,掌握多種媒體共同的技術(shù)基礎(chǔ)變得更具有現(xiàn)實(shí)教學(xué)意義。因此,有必要對(duì)多媒體技術(shù)實(shí)驗(yàn)容進(jìn)行相應(yīng)變動(dòng)。考慮到學(xué)時(shí)有限,總共才8學(xué)時(shí),讓學(xué)生做大量涉與到媒體處理技術(shù)的算法實(shí)驗(yàn)顯然也不太現(xiàn)實(shí),因此,在實(shí)驗(yàn)設(shè)計(jì)時(shí)決定以單一容,從簡(jiǎn)單到復(fù)雜過渡的培養(yǎng)方式為主,以培養(yǎng)學(xué)生最終能自己開發(fā)
4、相應(yīng)算法處理程序能力為主,力圖培養(yǎng)學(xué)生舉一反三的高素質(zhì)能力。但至于如何變動(dòng)更適合教學(xué)要求,這有待專家的指導(dǎo)和在實(shí)際實(shí)驗(yàn)過程中完善。也因此,以下實(shí)驗(yàn)容僅為建議采用。一、實(shí)驗(yàn)課程任務(wù)與要求1. 實(shí)驗(yàn)?zāi)康亩嗝襟w技術(shù)實(shí)驗(yàn)教學(xué)是為了將學(xué)生的計(jì)算機(jī)操作能力、分析能力、軟件設(shè)計(jì)能力與應(yīng)用實(shí)踐結(jié)合起來,引導(dǎo)學(xué)生由淺入深地掌握多媒體的計(jì)算機(jī)處理程序開發(fā),讓學(xué)生初步具備實(shí)際應(yīng)用的多媒體技術(shù)軟件開發(fā)與制作的基礎(chǔ)。2. 實(shí)驗(yàn)基本要求(以軟件設(shè)計(jì)為主要表現(xiàn)形式)上機(jī)前應(yīng)準(zhǔn)備好實(shí)驗(yàn)的程序設(shè)計(jì)算法描述與關(guān)鍵分析容;準(zhǔn)備好程序測(cè)試數(shù)據(jù)和設(shè)備操作步驟,上機(jī)調(diào)試、運(yùn)行;完成每個(gè)實(shí)驗(yàn)后進(jìn)行數(shù)據(jù)與程序?qū)Ρ确治觯贿f交實(shí)驗(yàn)結(jié)果的可執(zhí)行程
5、序、源程序并演示實(shí)驗(yàn)結(jié)果;寫出實(shí)驗(yàn)報(bào)告。二、實(shí)驗(yàn)學(xué)時(shí)安排實(shí)驗(yàn)一 讀寫B(tài)MP圖像程序配置 (2學(xué)時(shí))實(shí)驗(yàn)二 像素處理運(yùn)算 (2學(xué)時(shí))實(shí)驗(yàn)三 圖像壓縮編碼 (2學(xué)時(shí))實(shí)驗(yàn)四 多媒體程序開發(fā)或作品創(chuàng)作 (2學(xué)時(shí))三、實(shí)驗(yàn)報(bào)告格式實(shí)驗(yàn)報(bào)告:_學(xué)號(hào):_實(shí)驗(yàn)日期:_實(shí)驗(yàn)題目:實(shí)驗(yàn)?zāi)康模簩?shí)驗(yàn)容:實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)結(jié)果:結(jié)果分析:總結(jié):四、實(shí)驗(yàn)考核實(shí)驗(yàn)預(yù)習(xí)報(bào)告;實(shí)驗(yàn)簽到;上機(jī)實(shí)際操作;實(shí)驗(yàn)設(shè)計(jì)報(bào)告。五、實(shí)驗(yàn)儀器設(shè)備要求有快速的較高性能微機(jī)和較大存與硬盤的設(shè)備;設(shè)備數(shù)量能適應(yīng)學(xué)生人數(shù);有Delphi、Vc、Tc等程序設(shè)計(jì)環(huán)境;最好有Photoshop多媒體技術(shù)軟件以供對(duì)比實(shí)驗(yàn)結(jié)果。六、教材與參考書Ze-Nian L
6、i and Mark S. Drew. Fundamentals of Multimedia. :機(jī)械工業(yè),2004 .龐振平主編.多媒體技術(shù)基礎(chǔ). 華南理工大學(xué),2007 (超星)惠芬. 數(shù)字媒體技術(shù)、應(yīng)用、設(shè)計(jì). 清華大學(xué),2003 (書生)莊益瑞 .c+全方位學(xué)習(xí).中國(guó)鐵道工業(yè),2002(超星)Kenneth R.Castleman,朱志剛譯.數(shù)字多媒體技術(shù):Visual C+實(shí)現(xiàn)M.希望電子,2003科技編輯.精通visual c+數(shù)字圖像處理典型算法與實(shí)現(xiàn).人民郵電.2006實(shí)驗(yàn)一 讀寫B(tài)MP圖像程序配置實(shí)驗(yàn)?zāi)康恼莆瘴粓D圖像的讀入程序代碼實(shí)現(xiàn)技術(shù)。實(shí)驗(yàn)需要的基礎(chǔ)知識(shí)1BMP文件的組成
7、BMP圖像文件結(jié)構(gòu)可分為三部分:表頭、調(diào)色板和圖像數(shù)據(jù)。只有全彩色BMP圖像文件沒有調(diào)色板數(shù)據(jù),其余不超過256種顏色的圖像文件都必須設(shè)定調(diào)色板信息,即使是單色BMP圖像文件也不例外。(1)BMP表頭數(shù)據(jù)Windows把BMP圖像文件表頭細(xì)分為兩組數(shù)據(jù)結(jié)構(gòu):BITMAPFILEHEADER和BITMAPINFOHEADER,如果還需要調(diào)色板數(shù)據(jù),則放在表頭之后,兩數(shù)據(jù)結(jié)構(gòu)的容如下:(2)調(diào)色板數(shù)據(jù)Windows將BMP圖像文件的調(diào)色板數(shù)據(jù)結(jié)構(gòu)命名為RGBQUAD,該結(jié)構(gòu)描述組成一個(gè)顏色的紅、綠、藍(lán)相對(duì)強(qiáng)度值。其數(shù)據(jù)結(jié)構(gòu)如下:還有一個(gè)重要的數(shù)據(jù)結(jié)構(gòu)BITMAPINFO,該結(jié)構(gòu)由前面介紹的BITM
8、APINFOHEADER和RGBQUAD結(jié)構(gòu)組成,它提供了WindowsDIB的大小和顏色的完整定義。因此也可這樣說,DIB位圖由兩個(gè)不同的部分組成:描述位圖大小和顏色的BITMAPINFO結(jié)構(gòu)和定義位圖像素的字節(jié)數(shù)組,BITMAPINFO的結(jié)構(gòu)如下:(3)BMP圖像文件對(duì)圖像數(shù)據(jù)處理方式BMP圖像文件對(duì)圖像數(shù)據(jù)有三種處理方式:不壓縮數(shù)據(jù),任何BMP圖像文件都能以這種方式處理。RLE4壓縮法,這是專用于16色圖像數(shù)據(jù)的壓縮方法。RLE8壓縮法,只用于壓縮處理256色圖像數(shù)據(jù)。不壓縮圖像數(shù)據(jù)是BMP圖像文件的通用處理方式。雖然這種做法會(huì)使得BMP圖像文件的大小大與其他有壓縮處理的圖像文件,但是少
9、了壓縮和解壓縮的過程,也讓BMP圖像文件的讀或存取文件的速度超過壓縮處理的圖像文件。既然沒有了壓縮處理的文件,只要了解圖像數(shù)據(jù)的排列與存儲(chǔ)方式,必能正確地處理未壓縮數(shù)據(jù)的BMP圖像文件。BMP圖像文件的圖像數(shù)據(jù)的排列順序是以圖像的左下角為起點(diǎn),按照由左至右,由下至上的次序,將圖像數(shù)據(jù)一點(diǎn)一點(diǎn)存入文件的。圖像數(shù)據(jù)的存儲(chǔ)方式是:?jiǎn)紊珗D像是以一個(gè)字節(jié)記錄8點(diǎn);16色圖像是一個(gè)字節(jié)記錄兩點(diǎn),左邊四個(gè)Bits存第一點(diǎn),右邊四個(gè)Bits存第二點(diǎn);256色圖像是一個(gè)字節(jié)記錄一點(diǎn);全彩色圖像則是三個(gè)字節(jié)記錄一點(diǎn),而以RGB,RGB,RGB的次序排列下來。除此之外,BMP文件規(guī)定文件每行字節(jié)的個(gè)數(shù)必須是4的倍數(shù)
10、,若未達(dá)到4的倍數(shù),必須在每行的末端加上幾個(gè)字節(jié),以補(bǔ)足差額。2CDibImage類定義DIB設(shè)備無關(guān)位圖文件,這是一種文件格式,是為了保證用某個(gè)應(yīng)用程序創(chuàng)建的位圖圖形可以被其它應(yīng)用程序裝載或顯示一樣。 DIB的與設(shè)備無關(guān)性主要體現(xiàn)在以下兩個(gè)方面:DIB的顏色模式與設(shè)備無關(guān)。例如,一個(gè)256色的DIB即可以在真彩色顯示模式下使用,也可以在16色模式下使用。256色以下(包括256色)的DIB擁有自己的顏色表,像素的顏色獨(dú)立于系統(tǒng)調(diào)色板。由于DIB不依賴于具體設(shè)備,因此可以用來永久性地保存圖象。DIB一般是以*.BMP文件的形式保存在磁盤中的,有時(shí)也會(huì)保存在*.DIB文件中。運(yùn)行在不同輸出設(shè)備下
11、的應(yīng)用程序可以通過DIB來交換圖象。由于MFC未提供DIB類,用戶在使用DIB時(shí)將面臨繁重的Windows API編程任務(wù)。幸運(yùn)的是,Visual C+提供了一個(gè)較高層次的API,簡(jiǎn)化了DIB的使用。這些API函數(shù)實(shí)際上是由MFC的DibLook例程提供的,它們位于DibLook目錄下的dibapi.cpp、myfile.cpp和dibapi.h文件中,主要包括: ReadDIBFile /把DIB文件讀入存 SaveDIB /把DIB保存到文件中 CreateDIBPalette /從DIB中創(chuàng)建一個(gè)邏輯調(diào)色板 PaintDIB /顯示DIB DIBWidth /返回DIB的寬度 DIBHe
12、ight /返回DIB的高度 雖然MFC沒有封裝DIB,但是在程序中使用DIB還是十分方便的。在本小節(jié)中,將要構(gòu)造我們自已的DIB函數(shù)庫(kù),這樣在今后使用DIB時(shí),只要自己調(diào)用函數(shù)庫(kù)就可以了下面是CDibImage 類DIB函數(shù)庫(kù)的頭文件“DibImage.h”的容。class CDibImage / Constructor and Destructor /public:CDibImage();virtual CDibImage();/ function /public:BOOL PaintDIB (HDC, LPRECT, HDIB, LPRECT, CPalette* pPal);BOOL
13、CreateDIBPalette(HDIB hDIB, CPalette* cPal);LPSTR FindDIBBits (LPSTR lpbi);DWORD DIBWidth (LPSTR lpDIB);DWORD DIBHeight (LPSTR lpDIB);WORD PaletteSize (LPSTR lpbi);WORD DIBNumColors (LPSTR lpbi);HGLOBAL CopyHandle (HGLOBAL h);BOOL SaveDIB (HDIB hDib, CFile& file);HDIB ReadDIBFile(CFile& file);CDibIm
14、age 類的成員函數(shù)實(shí)現(xiàn)的源代碼詳細(xì)見樣例程序。3. bmp位圖訪問樣例程序正是通過CDibImage類實(shí)現(xiàn)對(duì)bmp圖像的訪問,其配置過程詳細(xì)見第六部分,需要反復(fù)練習(xí),認(rèn)真體會(huì)。實(shí)驗(yàn)容理解樣例程序代碼。配置位圖讀寫程序。實(shí)驗(yàn)步驟預(yù)習(xí)實(shí)驗(yàn)容。理解樣例程序運(yùn)行過程。配置位圖讀寫程序。給出程序運(yùn)行的流程圖。驗(yàn)收容配置是否成功。流程圖解釋是否合理。實(shí)驗(yàn)時(shí)紀(jì)律遵守情況。動(dòng)手能力。位圖讀寫程序配置過程。本實(shí)驗(yàn)配套的樣例程序(項(xiàng)目):zcwbmp,據(jù)此我們配置一個(gè)叫TestBmp讀寫位圖的程序。1. 打開樣例程序所在目錄,見如下容。用VS2005打開zcwbmp.sln文件,見如下圖:最左邊能看到項(xiàng)目zcw
15、bmp與其文件清單,如果點(diǎn)擊類視圖,則看到該項(xiàng)目的類清單。如下圖。CMainFrame是程序運(yùn)行時(shí)主窗口框架,CChildFrame是子窗口框架。CZcwbmpDoc是文檔,文檔類一般用來存儲(chǔ)容比如圖形文件的信息讀入后將放在這個(gè)類里,CZcwbmpView是視類,負(fù)責(zé)把文檔中容在子窗口框架顯示出來,子窗口框架在主窗口框架運(yùn)行,可運(yùn)行多個(gè)子窗口,即可打開多幅圖像。所以我們的程序是基于窗口的多文檔程序。CZcwbmpApp是應(yīng)用程序類,程序開始時(shí)運(yùn)行其實(shí)例。3. 程序運(yùn)行簡(jiǎn)要說明:CZcwbmpApp:InitInstance()-文檔模板()-LoadFrame(IDR_MAINFRAME)然后
16、基于消息運(yùn)行。所以CZcwbmpApp:InitInstance()大家都多看幾篇。4.TestBmp的配置。新建TestBmp工項(xiàng)目點(diǎn)擊項(xiàng)目在項(xiàng)目類型中選MFC,在模板中選MFC應(yīng)用程序,在名稱中輸入TestBmp。在位置處點(diǎn)自己想放置的位置,點(diǎn)確定:在應(yīng)用程序類型選中復(fù)合文檔支持。在右邊復(fù)合文檔支持選無。點(diǎn)下一步。點(diǎn)下一步:點(diǎn)下一步點(diǎn)下一步把最低一行的CView改成CScrollView,點(diǎn)完成。會(huì)問要不要保存原來的項(xiàng)目,如果有修改,可選擇保存。得下圖:添加CDibImage類。添加CDibImage類。復(fù)制實(shí)現(xiàn)CDibImage類的兩個(gè)文件在工程中添加這兩個(gè)文件:依次添加頭文件DibIm
17、age.h和實(shí)現(xiàn)文件DibImage.cpp得下圖修改DibImage.cpp文件,把其中#include zcwbmp.h改成#include TestBmp.h,原因是現(xiàn)在的工程是TestBmp而不是zcwbmp。工程的相應(yīng)修改。(1) 在BOOL CTestBmpApp:InitInstance() 實(shí)現(xiàn)代碼中加入如下代碼:/ 啟動(dòng)時(shí)不自動(dòng)打開一個(gè)空文檔 cmdInfo.m_nShellCommand = CCommandLineInfo:FileNothing;操作見下圖:點(diǎn)類視圖,在左邊的類中選中CTestApp類,在左邊下方會(huì)出現(xiàn)該類的方法(或行為或函數(shù)),選中InitInsanc
18、e(),其實(shí)現(xiàn)代碼將會(huì)在右上方的方框出現(xiàn),如上圖:然后在其中相應(yīng)位置添加,見下圖 (2) 文檔類的修改。 在TestBmpDoc.h的文件頭部添加以下#include語句:#include DibImage.h同時(shí)添加如下成員變量和成員函數(shù):public:HDIB GetHDIB() const return m_hDIB; CPalette* GetDocPalette() const return m_palDIB; CSize GetDocSize() const return m_sizeDoc; CDibImage* GetDibImage() const return m_pDib
19、Image; public:void ReplaceHDIB(HDIB hDIB);void InitDIBData();COLORREF m_refColorBKG;/ 背景色protected:CDibImage* m_pDibImage;HDIB m_hDIB;CPalette* m_palDIB;CSize m_sizeDoc;見下面的部分截圖:添加消息:在CTestBmpDoc添加:BOOL CTestBmpDoc:OnOpenDocument(LPCTSTR lpszPathName)virtual BOOL OnSaveDocument(LPCTSTR lpszPathName)
20、。操作過程是在類視圖右擊CTestBmpDoc類,點(diǎn)屬性,出現(xiàn)對(duì)話框如下圖:選中OnOpenDocument,即可在實(shí)現(xiàn)文件建好如下所示的語句:BOOL CTestBmpDoc:OnOpenDocument(LPCTSTR lpszPathName)if (!CDocument:OnOpenDocument(lpszPathName)return FALSE;/ TODO: 在此添加您專用的創(chuàng)建代碼return TRUE;在頭文件建好定義。public:virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);可類似創(chuàng)建virtual BOOL OnS
21、aveDocument(LPCTSTR lpszPathName)。里面的代碼與樣例程序同。在CTestBmpDoc類的構(gòu)造和析構(gòu)函數(shù)中添加以下代碼:CTestBmpDoc: CTestBmpDoc()/ TODO: add one-time construction code here/ 默認(rèn)背景色,灰色m_refColorBKG = 0 x00808080;/ 初始化變量m_pDibImage = NULL;m_hDIB = NULL;m_palDIB = NULL;m_sizeDoc = CSize(1,1);CTestBmpDoc: TestBmpDoc ()/ 判斷DIB對(duì)象是否存在
22、if (m_hDIB != NULL)/ 清除DIB對(duì)象:GlobalFree(HGLOBAL) m_hDIB);/ 判斷調(diào)色板是否存在if (m_palDIB != NULL)/ 清除調(diào)色板delete m_palDIB;m_palDIB = NULL;/ 判斷DibImage對(duì)象是否存在if (m_pDibImage != NULL)/ 清除DibImage對(duì)象delete m_pDibImage;m_pDibImage = NULL;在文檔實(shí)現(xiàn)文件里添加void InitDIBData()實(shí)現(xiàn),部代碼和樣例程序代碼一樣;void CTestBmpDoc:InitDIBData()/ 初始
23、化DIB對(duì)象if (m_palDIB != NULL)delete m_palDIB;m_palDIB = NULL;if (m_hDIB = NULL)return;LPSTR lpDIB = (LPSTR) :GlobalLock(HGLOBAL) m_hDIB);/ 判斷圖像是否過大if (m_pDibImage-DIBWidth(lpDIB) INT_MAX |m_pDibImage-DIBHeight(lpDIB) INT_MAX):GlobalUnlock(HGLOBAL) m_hDIB);:GlobalFree(HGLOBAL) m_hDIB);m_hDIB = NULL;CSt
24、ring strMsg;strMsg = BMP圖像太大!;/MessageBox(NULL, strMsg, 系統(tǒng)提示, MB_ICONINFORMATION | MB_OK);return;m_sizeDoc = CSize(int) m_pDibImage-DIBWidth(lpDIB), (int) m_pDibImage-DIBHeight(lpDIB);:GlobalUnlock(HGLOBAL) m_hDIB);/ 創(chuàng)建新調(diào)色板m_palDIB = new CPalette;if (m_palDIB = NULL):GlobalFree(HGLOBAL) m_hDIB);m_hD
25、IB = NULL;return;if (m_pDibImage-CreateDIBPalette(m_hDIB, m_palDIB) = NULL)delete m_palDIB;m_palDIB = NULL;return;配置class CTestBmpView。把void CTestBmpView:OnDraw(CDC* pDC)中的容改寫成如下容。void CZcwbmpView:OnDraw(CDC* pDC)BeginWaitCursor();CTestBmpDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);HDIB hDIB = pDoc
26、-GetHDIB();if (hDIB != NULL)LPSTR lpDIB = (LPSTR) :GlobalLock(HGLOBAL) hDIB);int cxDIB = (int) pDoc-GetDibImage()-DIBWidth(lpDIB);int cyDIB = (int) pDoc-GetDibImage()-DIBHeight(lpDIB);:GlobalUnlock(HGLOBAL) hDIB);CRect rcDIB;rcDIB.top = rcDIB.left = 0;rcDIB.right = cxDIB;rcDIB.bottom = cyDIB;CRect r
27、cDest;if (pDC-IsPrinting()/ 是打印,計(jì)算輸出圖像的位置和大小,以便符合頁面/ 獲取打印頁面的水平寬度(象素)int cxPage = pDC-GetDeviceCaps(HORZRES);/ 獲取打印頁面的垂直高度(象素)int cyPage = pDC-GetDeviceCaps(VERTRES);/ 獲取打印機(jī)每英寸象素?cái)?shù)int cxInch = pDC-GetDeviceCaps(LOGPIXELSX);int cyInch = pDC-GetDeviceCaps(LOGPIXELSY);/ 計(jì)算打印圖像大小(縮放,根據(jù)頁面寬度調(diào)整圖像大小)rcDest.to
28、p = rcDest.left = 0;rcDest.bottom = (int)(double)cyDIB * cxPage * cyInch)/ (double)cxDIB * cxInch);rcDest.right = cxPage;/ 計(jì)算打印圖像位置(垂直居中)int temp = cy (rcDest.bottom - rcDest.top);rcDest.bottom += temp/2;rcDest.top += temp/2;else rcDest = rcDIB;/ 不必縮放圖像pDoc-GetDibImage()-PaintDIB(pDC-m_hDC, &rcDest,
29、 pDoc-GetHDIB(),&rcDIB, pDoc-GetDocPalette();EndWaitCursor();配置時(shí)是 CTestBmpView:OnDraw(CDC* /*pDC*/)形式,注意改成 CTestBmpView:OnDraw(CDC* pDC)由于是從vc6.0升級(jí)過來,這個(gè)MessageBox(NULL, strMsg, 系統(tǒng)提示, MB_ICONINFORMATION | MB_OK);編譯時(shí)會(huì)出錯(cuò),可注釋掉。實(shí)驗(yàn)二 像素處理運(yùn)算實(shí)驗(yàn)?zāi)康耐ㄟ^樣例程序來理解圖像的象素處理的基本方法。掌握?qǐng)D像像素訪問的基本方法和步驟,并在自己的工程文件中實(shí)現(xiàn)對(duì)象素的訪問修改等操作。
30、實(shí)驗(yàn)要求能實(shí)現(xiàn)對(duì)像素值的訪問。能實(shí)現(xiàn)像素值的修改操作。能實(shí)現(xiàn)有意思義的圖形變換,比如圖像反色處理,平移處理等。交互界面良好。實(shí)驗(yàn)基礎(chǔ)知識(shí)準(zhǔn)備1在示例程序中,像素訪問與處理關(guān)健代碼(這段代碼需要反理讀,直到理解并能應(yīng)用為止)。BOOL CDibImage:LinerTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, FLOAT fA, FLOAT fB)unsigned char*lpSrc;/ 指向源圖像的指針LONGi;/ 循環(huán)變量LONGj;LONGlLineBytes;/ 圖像每行的字節(jié)數(shù)FLOATfTemp;/ 中間變量lLineByte
31、s = WIDTHBYTES(lWidth * 8);/ 計(jì)算圖像每行的字節(jié)數(shù)for(i = 0; i lHeight; i+)/ 每行for(j = 0; j 255)/ 判斷是否超出圍*lpSrc = 255;else if (fTemp GetHDIB();/ 找到DIB圖像象素起始位置lpDIBBits = pDoc-GetDibImage()-FindDIBBits(lpDIB);/ 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的反色,其它的可以類推)if (pDoc-GetDibImage()-DIBNumColors(lpDIB) != 256)MessageBo
32、x(目前只支持256色位圖的反色!, 系統(tǒng)提示 , MB_ICONINFORMATION | MB_OK);:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();return;BeginWaitCursor();/ 調(diào)用LinerTrans()函數(shù)反色pDoc-GetDibImage()-LinerTrans(lpDIBBits,pDoc-GetDibImage()-DIBWidth(lpDIB), pDoc-GetDibImage()-DIBHeight(lpDIB), fA, fB);pDoc-SetModifiedFlag(TRUE);/ 設(shè)置臟標(biāo)記pDoc-UpdateAllViews(NULL);/ 更新視圖:GlobalUnlock(HGLOBAL) pDoc-GetHDIB();EndWaitCursor();CLineTransView:OnPointInvert() 功能是實(shí)現(xiàn)象素顏色反轉(zhuǎn),但其是通過調(diào)用CDibImage:LinerTrans(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, FLOAT fA, F
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一次性醫(yī)用口罩購(gòu)銷合同(5篇)
- 《市場(chǎng)競(jìng)爭(zhēng)策略》課件
- 外商投資企業(yè)土地使用合同一(13篇)
- 2025出納人員工作總結(jié)范文(17篇)
- 叉車維修承包合同匯編(4篇)
- 幼兒園教師遠(yuǎn)程培訓(xùn)心得體會(huì)(4篇)
- 《滇池衛(wèi)城傳播策略》課件
- 世界森林日演講稿600字(20篇)
- 語文課前經(jīng)典的演講稿(18篇)
- 2025年黑龍江貨運(yùn)從業(yè)資格證考試模擬題庫(kù)答案
- 荊州市國(guó)土空間總體規(guī)劃(2021-2035年)
- 2024年中考語文復(fù)習(xí):文學(xué)類文本閱讀 考點(diǎn)分類練習(xí)題匯編(含解析)
- 汽車租賃服務(wù)方案(投標(biāo)方案)
- 2024年江蘇高考語文試題(含答案)
- 項(xiàng)目2-低頻電療法
- 胸腔閉式引流護(hù)理-中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)
- 三方安全管理協(xié)議書模板
- 幼兒園大班古詩(shī)《春夜喜雨》課件
- 2023-2024學(xué)年河南省鄭州外國(guó)語中學(xué)八年級(jí)(下)期中數(shù)學(xué)試卷(含解析)
- 人體發(fā)育學(xué)模考試題與參考答案
- 制造執(zhí)行系統(tǒng)集成
評(píng)論
0/150
提交評(píng)論