VS2010 / MFC + OpenCV 2.4.1打開圖片

Windows 7 x64,VS2010 / MFC + OpenCV 2.4.1打開圖片顯示到Picture控件中。html

OpenCV 2.二、OpenCV 2.3一樣適用。ide

工具/原料函數

  • WinXP / Win7 x86 / x64工具

  • OpenCV 2.2 / 2.3 / 2.4ui

  • Visual Studio 2010code

  • 因Opencv2.2之後的版本就取消了CvvImage這個類,而顯示圖片到MFC的Picture控件須要用到這個類,因此須要準備CvvImage.h和CvvImage.cpp文件(從之前版本的源碼中得到),下載地址:htm

http://dl.dbank.com/c04u6b8sxe事件

方法/步驟圖片

  1.  

1、新建項目ip

菜單,文件 - 新建 - 項目

clip_image001

  1. Visual C++,MFC應用程序,名稱爲MFC_DEMO

clip_image002

  1. 下一步

clip_image003

  1. 基於對話框,不使用Unicode庫,在靜態庫中使用MFC,完成

clip_image004

  1. 出現以下界面

clip_image005

  1. 2、配置OpenCV環境

若是是初次配置OpenCV環境,須要在環境變量中增長如下路徑(右擊計算機,屬性,打開控制面板,點擊左側高級系統設置,環境變量)

在系統變量的PATH中添加

;D:\Program Files\opencv\build\x86\vc10\bin

注意是添加,原有項目千萬不要刪掉,每項之間以英文狀態下的分號隔開

新建OPENCV項,其值爲 D:\Program Files\opencv\build

其中本例中D:\Program Files\opencv爲OpenCV安裝目錄,根據你安裝的狀況自行修改。後文相同,再也不復述。

  1. 菜單,視圖,屬性管理器

clip_image006

  1. 雙擊工程名稱,打開屬性頁

clip_image007

  1. 選擇配置目錄,VC++目錄,包含目錄,點擊右側下拉箭頭,編輯

clip_image008

  1. 點擊右上角圖標添加文件夾

clip_image009

  1. 「包含目錄」中添加

D:\Program Files\opencv\build\include

D:\Program Files\opencv\build\include\opencv

D:\Program Files\opencv\build\include\opencv2

clip_image010

  1. 一樣,在「包含目錄」下方的「庫目錄」中添加

D:\Program Files\opencv\build\x86\vc10\lib

連接器,輸入,附加依賴項,編輯

clip_image011

  1. 此處添加

opencv_core241d.lib

opencv_highgui241d.lib

opencv_video241d.lib

opencv_ml241d.lib

opencv_legacy241d.lib

opencv_imgproc241d.lib

若是你的OpenCV版本不是2.4.1,只需將文件名稱後綴中的241修改成對應版本,具體可打開D:\Program Files\opencv\build\x86\vc10\lib(即前面添加的庫目錄)查看所需文件是否存在。

clip_image012

  1. 在屬性頁左上角配置中選擇Release

clip_image013

  1. 彈出保存對話框,則選是

clip_image014

  1. 一樣,在Release頁面附加依賴性中增長

opencv_core241.lib

opencv_highgui241.lib

opencv_video241.lib

opencv_ml241.lib

opencv_legacy241.lib

opencv_imgproc241.lib

文件名與前面相比,少了後綴"d"

點擊肯定,至此OpenCV環境已配置完成

  1. 3、添加和設置控件

菜單,視圖,工具箱,打開工具箱

clip_image015

  1. 選中Button控件

clip_image016

  1. 將Button從工具箱向窗體拖動,添加按鈕

clip_image017

  1. 同理,添加Picture Control控件

clip_image018

  1. 右擊Picture控件,屬性,打開控件屬性窗口,其ID爲IDC_STATIC,修改Type爲Rectangle

clip_image019

  1. 將Picture控件大小調整合適,如圖

clip_image020

  1. 右擊添加的按鈕,屬性

clip_image021

  1. 可將Caption改成OpenImg

clip_image022

  1. 右擊按鈕,添加事件處理程序

clip_image023

  1. 選擇BN_CLICKED,類列表爲CMFC_DEMODlg,函數名爲OnBnClickedOpenImg,添加編輯

clip_image024

  1. 4、添加OpenCV的CvvImage文件

右擊解決資源方案管理器中的頭文件,添加,現有項,選擇CvvImage.h

clip_image025

  1. 一樣,源文件中添加CvvImage.cpp

clip_image026

  1. 5、添加代碼

在類視圖或解決方案管理器中雙擊打開MFC_DEMODlg.h

clip_image027

  1. 添加代碼

#include "cv.h"  
#include "highgui.h"    
#include "E:\\CvvImage.h"

其中CvvImage.h若不在工程的包含目錄中,則要有完整路徑,「\」須要寫成「\\」,如E:\\CvvImage。

clip_image028

  1. 在MFC_DEMODlg.h文件中CMFC_DEMODlg類的聲明中添加函數DrawPicToHDC()的聲明

void DrawPicToHDC(IplImage *img, UINT ID);

clip_image029

  1. 在MFC_DEMODlg.cpp文件中添加函數

void CMFC_DEMODlg::DrawPicToHDC(IplImage *img, UINT ID)  
{    
CDC *pDC = GetDlgItem(ID)->GetDC();    
HDC hDC= pDC->GetSafeHdc();    
CRect rect;    
GetDlgItem(ID)->GetClientRect(&rect);    
CvvImage cimg;    
cimg.CopyOf( img ); // 複製圖片    
cimg.DrawToHDC( hDC, &rect ); // 將圖片繪製到顯示控件的指定區域內    
ReleaseDC( pDC );    
}

  1. 在新增按鈕的響應函數中添加代碼爲以下

void CMFC_DEMODlg::OnBnClickedOpenImg()  
{    
// TODO: 在此添加控件通知處理程序代碼    
IplImage *image=NULL; //原始圖像    
if(image) cvReleaseImage(&image);    
image = cvLoadImage("D:\\demo.jpg",1); //顯示圖片    
DrawPicToHDC(image, IDC_ShowImg);    
}

其中,D:\\demo.jpg爲預先存儲到D:\demo.jpg的已有圖片文件,IDC_STATIC爲Picture控件的ID號

clip_image030

  1. 6、編譯運行

點擊菜單下方工具欄中的綠色向右箭頭便可編譯生成程序

clip_image031

  1. ?點擊OpenImg按鈕便可打開D:\demo.jpg並顯示在Picture控件上

clip_image032

相關文章
相關標籤/搜索