- 相關(guān)推薦
彩色轉(zhuǎn)灰度實(shí)習(xí)報(bào)告
《面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)習(xí)報(bào)告 彩色轉(zhuǎn)灰度
一、功能模塊分析
這個(gè)程序主要是實(shí)現(xiàn)實(shí)現(xiàn) BMP圖片的讀取、顯示、保存與圖像處理包括灰度化。
1.圖片的存取
1.1 BMP圖片的讀取
在MyDIPDoc.cpp文件的OnOpenDocumen()函數(shù)實(shí)現(xiàn)BMP文件的讀取。讀取功能的實(shí)現(xiàn)函數(shù)中需要傳入BMP圖片的名字路徑,然后該函數(shù)沿著此路徑去尋找相應(yīng)的BMP圖片,讀取圖像數(shù)據(jù)進(jìn)內(nèi)存生成DIB,并存放在m_lpDib所指向的緩沖區(qū),若返回值為1,則會(huì)讀取打開此圖片;否則,則會(huì)報(bào)Read error的錯(cuò)誤。
1.2 BMP圖片的顯示
修改MyDIPView中的OnDraw()函數(shù)和OnInitialUpdate()函數(shù),實(shí)現(xiàn)圖片的顯示。在顯示函數(shù)實(shí)現(xiàn)其功能時(shí),需要傳入給定設(shè)備環(huán)境指針,以及需要顯示的矩形區(qū)域在設(shè)備環(huán)境中的位置,然后將m_lpDib所指向的DIB顯示出來并可根據(jù)需要設(shè)置顯示窗口大小。
1.3 BMP圖片的保存
在MyDIPDoc.cpp文件的OnSaveDocument()函數(shù)實(shí)現(xiàn)BMP文件的保存。保存圖片時(shí)則需給定一個(gè)圖像文件名及其路徑,將m_lpDib指向DIB存盤,當(dāng)找到此路徑后,應(yīng)用程序自然將其保存在當(dāng)前路徑下。
2.圖片的操作
2.1 BMP圖片的負(fù)像
void MyDIPView::OnReverse()函數(shù)將m_pImgData作為輸入圖像,將其求負(fù)像操作,結(jié)果存入m_pImgDataOut中。黑白圖像的輸出結(jié)果與原來相反,即原來的白色輸出為黑色,原來的黑色輸出為白色。對(duì)于彩色圖像,要分通道單獨(dú)處理,最終得出的仍然是彩色圖像,其色彩與原來的成互補(bǔ)關(guān)系。
2.2 BMP圖片的灰度化
void MyDIPView::OnGray()函數(shù)將m_pImgData作為輸入圖像,將其求灰值操作,結(jié)果存入m_pImgDataOut中。應(yīng)用程序丟掉圖像的彩色成分,用灰度來表示圖像的亮度信息,最終輸出黑白圖像。其只處理彩色圖像。
二、實(shí)驗(yàn)環(huán)境與步驟
一. 創(chuàng)建工程與前期準(zhǔn)備
1. 新建程序
運(yùn)行Microsoft VisualC++ 6.0在其中打開新建創(chuàng)建工程,采用MFC App Wizard應(yīng)用程序向?qū)Ы⒌腗DI(多文檔)框架的工程mtg。
2. 添加新類
向新建的工程中添加新的類CImageCenterDib和CGrayTrans,首先是將ImageCenterDib.cpp,ImageCenterDib.h;GrayTrans.cpp,GrayTrans.h這四個(gè)文件復(fù)制到所創(chuàng)建的程序中,在file view中的Source Files中添加兩個(gè).cpp的資源文件,在Head Files中添加兩個(gè).h的頭文件。并在CMtgView 類中的mtgView.cpp和MyDIP類的mtgView.cpp文件包含新加入的兩個(gè)類的頭文件#include "ImageCenterDib.h"和#include "GrayTrans.h"。其中類CImageCenterDib主要實(shí)現(xiàn)圖像的打開,顯示和保存。CGrayTrans主要實(shí)現(xiàn)對(duì)圖像的編輯。
二. 圖像的基本操作,打開,顯示和保存。
1. 在文檔類中定義一個(gè)私有屬性的ImageCenterDib類對(duì)象 m_dib,用來為打開BMP文件創(chuàng)建一個(gè)ImageCenterDib類對(duì)象。
Private :
ImgCenterDib m_dib;
并實(shí)現(xiàn)一個(gè)公有函數(shù)GetPDib(),用來返回m_dib的指針,為視圖類訪問文檔類m_dib數(shù)據(jù)提供之處。
ImgCenterDib *GetPDib()
{return &m_dib;}
2.圖像的讀取
首先通過類向?qū)騇yDIP中添加函數(shù)OnOpenDocumen()。然后在MyDIPDoc.cpp文件的OnOpenDocumen()函數(shù)中添加如下代碼,實(shí)現(xiàn)BMP文件的讀取
3.BMP圖片的保存
首先通過類向?qū)騇yDIP中添加函數(shù)OnSaveDocumen()。然后在MyDIPDoc.cpp文件中的OnSaveDocument()函數(shù)中添加如下代碼,實(shí)現(xiàn)BMP文件的保存
4.BMP圖片的顯示
用類向?qū)騇yDIPView中添加OnDraw()函數(shù)和OnInitialUpdate()函數(shù),然后再編輯其中代碼實(shí)現(xiàn)圖片的顯示和子窗口中滾動(dòng)條的添加。
三、實(shí)驗(yàn)結(jié)果及分析
一.實(shí)驗(yàn)結(jié)果截圖
1. 圖片的打開
2. 圖片的顯示
3. 圖片的保存
4. 圖片的灰度化
四.總結(jié)體會(huì)
經(jīng)過這幾天的上級(jí)實(shí)習(xí),自己的動(dòng)手能力得到了很大的提高,一些快遺忘的知識(shí)又再次得到了鞏固,可以說真來了一個(gè)總復(fù)習(xí)。由于代碼一直寫的比較亂,在程序出現(xiàn)錯(cuò)誤很難找到原因,特別是在代碼比較長(zhǎng)的的時(shí)候,于是明白了代碼的書寫規(guī)范很重要,它不僅是給機(jī)器閱讀的,只有寫的規(guī)范才能更好的讓人理解。雖然編程過程遇到一些困難難以解決,但只要仔細(xì)思考,最終還是做出來了,當(dāng)然成功的那一刻的喜悅也是無以言表的。上機(jī)最大的收獲還是懂得如何去分析需求,根據(jù)需求來設(shè)計(jì)程序的框架,以免出現(xiàn)思維混亂的的情況。當(dāng)然程序思維也得到了很大的提高,對(duì)于代碼的閱讀及修正能力也有了一些進(jìn)步。通過此次上機(jī)我還認(rèn)識(shí)到,只有通過自己實(shí)踐得到的知識(shí)才是自己的,同時(shí)通過上機(jī)才能對(duì)知識(shí)的理解的更透徹。當(dāng)然可能有些進(jìn)步我自己也沒有也沒有發(fā)覺,就像老師說的這門課程最重要的就是實(shí)踐,因此可以這么說上機(jī)有百利而無一害。
【彩色轉(zhuǎn)灰度實(shí)習(xí)報(bào)告】相關(guān)文章:
大學(xué)轉(zhuǎn)專業(yè)怎么轉(zhuǎn)04-02
彩色的我作文02-05
彩色幸福作文03-07
彩色的童年作文06-18
《彩色世界》教案08-27
彩色的夢(mèng)教案01-11
彩色的校園作文06-19