課程設計-車牌檢測

sinat_14889231發表於2016-01-07

1、如何開啟影像檔案的View

在APP中新增開啟訊息和開啟處理函式,函式邏輯如下:

1)CFileDialog,將要開啟的檔名存到對話方塊中,這裡使用了過濾陣列,開啟BMP檔案或所有檔案

2)CFileDialog::DoModal()顯示檔案對話方塊

        3)使用CFileDialog::GetPathName()函式獲取你選取的檔案的路徑,並使用CString::MakeUpper將檔案路徑名都改為大寫

4)使用CWinApp::OpenDocumentFile開啟或建立一個文件檔案 

 

2、如何將檔案的資料儲存在DOC中

1)在Doc中設定兩個變數:布林變數m_bImageLoaded判斷影像是否讀入記憶體中;m_pDipObject指標

                  注:stdafx.h 將常用的頭函式放在這裡。

             

下面是Doc中的OnFileOpen函式

1)CFileDialog,將要開啟的檔名存到對話方塊中,這裡使用了過濾陣列,開啟BMP檔案或所有檔案

2)CFileDialog::DoModal()顯示檔案對話方塊

3)使用CFileDialog::GetPathName()函式獲取你選取的檔案的路徑

4)使用CWinApp::OpenDocumentFile開啟或建立一個文件檔案 ;在這裡要使用afxGetApp獲取App的指標

5)用ReadImgToDoc將檔案讀取到Doc中


if (!ReadImgToDoc())
{
AfxMessageBox("無法載入影像檔案");
return;
}

好像沒有執行到這裡的程式碼


ReadImgToDoc()函式的實現方法

1)獲取影像檔案的路徑

2)設定等待游標CCmdTarget::BeginWaitCursor,在Doc類中當開啟或儲存檔案的時候,等待游標告訴使用者正忙

3)呼叫自定義的CDibObject類的建構函式,開啟檔案,並取消等待游標

4)判斷讀取檔案是否成功


3、如何另存為影像

if (FileDlg.DoModal() == IDOK)
{

外面的程式碼和開啟的模式差不多,下面是裡面的程式碼

1)呼叫CWnd* AfxGetMainWnd( ) 獲取主框架類,CMDIChildWnd* MDIGetActive( BOOL*pbMaximized = NULL ) const獲取子框架類,

CView* GetActiveView( ) const;獲得試類

2)判斷影像是否存在

3)存在,獲取另儲存欄中的檔案路徑,擷取.前的檔名,然後加上指定的副檔名已構成完整的檔名

4)呼叫CDibOject類中的Save函式儲存影像

5)設定視窗的標題


另存為存在一些問題

4、繪製讀入的影像

1)載入圖片的資料

2)根據的圖片的大小設定滾動視窗

3)獲取客戶區的尺寸

CView::OnPrepareDC,在呼叫OnDraw函式前,由Framework呼叫,在預設的實現中不做任何事,但是派生類中一般會重寫這個函式,比如CScrollView,為了你所寫的內容調整螢幕,你必須隨時在你重新寫的地方呼叫基類的實現 


4)獲取影像的寬度和高度

5)當影像的尺寸小於視窗尺寸時,將影像放在客戶區中間


5、車牌定位

定義影像處理函式定義一般的全域性函式

Canny運算元

1)等待游標

2)獲取指向影像的指標(在Doc中)

3) 判斷是否是8-bpp點陣圖,不處理8-bpp點陣圖

4) 返回以象素表示的DIB的寬度和高度(CDibObject類中的方法)

5)得到dib的實際儲存寬度,


  影像資訊頭




相關文章