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