VS2010 + OpenCV2.4.3 + Windows Form Application
轉載地址:http://download.csdn.net/detail/gdwuyihua/4814502
(注意:如需引用本文請徵得本人許可!)
(原創)OpenCV在VS2010的Windows Form Application 的實現
以下爲本人親自驗證過,含詳細具體的安裝編譯及注意事項,完全可供參考!希望可以幫到OPENCV的愛好者(尤其是新兵)少走彎路.如需源碼可郵件詢索(後附).
VS2010 + OpenCV2.4.3
====================================================
一.OpenCV的編譯安裝:
1.解壓OpenCV-2.4.3.exe -> D:/OpenCV/Resources/OpenCV-2.4.3/opencv
2.運行CMake...爲VS編譯...
Where is the source code(源碼): D:/OpenCV/Resources/OpenCV-2.4.3/opencv
Where is build the binaries(目標): D:/OpenCV/Resources/OpenCV-2.4.3/opencv/vs2010
Configure: 選擇 Visual Studio 10/?
Generate: 生成目標
3.打開D:/OpenCV/Resources/OpenCV-2.4.3/opencv/vs2010,用對應版本的VS打開OpenCV.sln...
A.編譯OpenCV方案Debug版本:
1,編譯OpenCV方案(Debug): 在VS工作區界面左側方案瀏覽器(Solution Explorer)中選中最頂項方案"Solution 'OpenCV' (61 projects)",確定Solution Configure爲Debug,右鍵執行Build Soluton(編譯方案);
2,編譯ALL_BUILD項目(Debug): 在VS工作區界面左側方案瀏覽器(Solution Explorer)列表中選中項目"ALL_BUILD",確定Solution Configure爲Debug,右鍵執行Build(編譯項目);
3,編譯CMakeTargets\INSTALL項目(Debug): 在VS工作區界面左側方案瀏覽器(Solution Explorer)列表中選中"CMakeTargets\INSTALL"項目,確定Solution Configure爲Debug,右鍵執行Build(編譯項目);
B.編譯OpenCV方案Release版本:
1,編譯OpenCV方案(Release): 在VS工作區界面左側方案瀏覽器(Solution Explorer)中選中最頂項方案"Solution 'OpenCV' (61 projects)",確定Solution Configure爲Release,右鍵執行Build Soluton(編譯方案);
2,編譯ALL_BUILD項目(Release): 在VS工作區界面左側方案瀏覽器(Solution Explorer)列表中選中項目"ALL_BUILD",確定Solution Configure爲Release,右鍵執行Build(編譯項目);
3,編譯CMakeTargets\INSTALL項目(Release): 在VS工作區界面左側方案瀏覽器(Solution Explorer)列表中選中"CMakeTargets\INSTALL"項目,確定Solution Configure爲Release,右鍵執行Build(編譯項目);
4.檢查編譯後的結果:
D:\OpenCV\Resources\OpenCV-2.4.3\opencv\vs2010\bin: 有Debug/Release兩目錄及相關文件資源;
D:\OpenCV\Resources\OpenCV-2.4.3\opencv\vs2010\lib: 有Debug/Release兩目錄及相關文件資源;
D:\OpenCV\Resources\OpenCV-2.4.3\opencv\vs2010\install: 有bin/include/lib三目錄及相關文件資源;
其它可不要求
5.應用配置:
a.將編譯好的目錄D:\OpenCV\Resources\OpenCV-2.4.3\opencv\vs2010\install複製到C:\,並改名爲C:\opencv;
b.增加OSXP系統變量Path: c:\opencv\bin (供OpenCV的exe應用程序調用);
c.增加OSXP系統變量OPENCV: 值爲: C:\opencv;
---------------------------------------------
二.程序項目配置:
特別注意: 對項目屬性的配置應注意Debug/Release兩個版本各配置項的統一性,否則會引起可能的編譯出錯,如:Common Language Runtime Support(公共語言運行庫支持): Common Language Runtime Support/(clr) (公共語言運行庫支持(/clr)),否則將會導致編譯出錯!
6.VS應用(VS2010.控制檯應用程序):
6.1,在VS項目屬性中設置有下:
6.1.1,Configuration Properties(屬性)/...
a, General(常規):
Use of MFC(MFC的使用): Use Standard Windows Libraries(使用標準 Windows 庫)
Use of ATL(ALT的使用): Not Using ATL(不使用 ATL)
Common Language Runtime Support(公共語言運行庫支持): No Common Language Runtime Support(無公共語言運行庫支持,其它選項會出錯)
b, C/C++/General:
Additonal Include Directories(附加包含目錄): C:\opencv\include;c:\opencv\include\opencv;C:\opencv\include\opencv2 (可勾選Inherit from parent or project defaults(繼承父級或項目默認值))
c, Linker/General:
Additonal Library Directories(附加庫目錄): C:\opencv\lib (可勾選Inherit from parent or project defaults(繼承父級或項目默認值))
以上兩項設置b,c(附加包含目錄,附加庫目錄)均可在以下d等效替代等值設置:
d, (VS2005無此項)VC++ Directories:
Include Directories(包含目錄): C:\opencv\include;c:\opencv\include\opencv;C:\opencv\include\opencv2 (可勾選Inherit from parent or project defaults(繼承父級或項目默認值))
Library Directories(庫目錄): C:\opencv\lib (可勾選Inherit from parent or project defaults(繼承父級或項目默認值))
e, Linker(鏈接器)/Input(輸入)/Additional Libraries(附加依賴項):爲項目屬性引入庫:
Release版本:...............
opencv_core243.lib
opencv_highgui243.lib
opencv_video243.lib
opencv_photo243.lib
opencv_calib3d243.lib
opencv_contrib243.lib
opencv_features2d243.lib
opencv_flann243.lib
opencv_gpu243.lib
opencv_imgproc243.lib
opencv_legacy243.lib
opencv_ml243.lib
opencv_nonfree243.lib
opencv_objdetect243.lib
opencv_stitching243.lib
opencv_ts243.lib
opencv_videostab243.lib
Debug版本...................
opencv_core243d.lib
opencv_highgui243d.lib
opencv_video243d.lib
opencv_photo243d.lib
opencv_calib3d243d.lib
opencv_contrib243d.lib
opencv_features2d243d.lib
opencv_flann243d.lib
opencv_gpu243d.lib
opencv_imgproc243d.lib
opencv_legacy243d.lib
opencv_ml243d.lib
opencv_nonfree243d.lib
opencv_objdetect243d.lib
opencv_stitching243d.lib
opencv_ts243d.lib
opencv_videostab243d.lib
6.2,在VS項目源碼包含引用:
//可用...
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#pragma comment( lib, "opencv_highgui243d.lib" )
#pragma comment( lib, "opencv_core243d.lib" )
#pragma comment( lib, "opencv_ml243d.lib" )
#pragma comment( lib, "opencv_imgproc243d.lib" )
using namespace cv;
三.程序範碼(按鈕事件):
//按鈕Show事件處理...
namedWindow("show_image",WINDOW_AUTOSIZE);
Mat src = imread("d:/opencv.jpg");
//while(1)
{
imshow("show_image", src);
//char c = waitKey(0);
//if(27 == ' ')
//return 0;
}
//return 0;
============================================================================================
資源: VS2010 + OpenCV2.4.3 + Windows Form Application
一.VS項目屬性中設置有下:
6.1.1,Configuration Properties(屬性)/...
a, General(常規):
Use of MFC(MFC的使用): Use Standard Windows Libraries(使用標準 Windows 庫)
Use of ATL(ALT的使用): Not Using ATL(不使用 ATL)
Common Language Runtime Support(公共語言運行庫支持): Common Language Runtime Support/(clr) (公共語言運行庫支持(/clr))
b, C/C++/General:
Additonal Include Directories(附加包含目錄): c:\opencv\include;c:\opencv\include\opencv;c:\opencv\include\opencv2 (可勾選Inherit from parent or project defaults(繼承父級或項目默認值))
c, Linker/General:
Additonal Library Directories(附加庫目錄): c:\opencv\lib (可勾選Inherit from parent or project defaults(繼承父級或項目默認值))
以上兩項設置b,c(附加包含目錄,附加庫目錄)均可在以下d等效替代等值設置:
d, (VS2005無此項)VC++ Directories:
Include Directories(包含目錄): c:\opencv\include;c:\opencv\include\opencv;C:\opencv\include\opencv2 (可勾選Inherit from parent or project defaults(繼承父級或項目默認值))
Library Directories(庫目錄): c:\opencv\lib (可勾選Inherit from parent or project defaults(繼承父級或項目默認值))
e, Linker(鏈接器)/Input(輸入)/Additional Libraries(附加依賴項):爲項目屬性引入庫:
Release版本:...............
opencv_core243.lib
opencv_highgui243.lib
opencv_video243.lib
opencv_photo243.lib
opencv_calib3d243.lib
opencv_contrib243.lib
opencv_features2d243.lib
opencv_flann243.lib
opencv_gpu243.lib
opencv_imgproc243.lib
opencv_legacy243.lib
opencv_ml243.lib
opencv_nonfree243.lib
opencv_objdetect243.lib
opencv_stitching243.lib
opencv_ts243.lib
opencv_videostab243.lib
Debug版本...................
opencv_core243d.lib
opencv_highgui243d.lib
opencv_video243d.lib
opencv_photo243d.lib
opencv_calib3d243d.lib
opencv_contrib243d.lib
opencv_features2d243d.lib
opencv_flann243d.lib
opencv_gpu243d.lib
opencv_imgproc243d.lib
opencv_legacy243d.lib
opencv_ml243d.lib
opencv_nonfree243d.lib
opencv_objdetect243d.lib
opencv_stitching243d.lib
opencv_ts243d.lib
opencv_videostab243d.lib
二.在VS項目源碼包含引用:
//包含引入OpenCV所需文件...
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
//選用Debug/Release...
#ifdef _DEBUG
#pragma comment( lib, "opencv_highgui243d.lib" )
#pragma comment( lib, "opencv_core243d.lib" )
#pragma comment( lib, "opencv_ml243d.lib" )
#pragma comment( lib, "opencv_imgproc243d.lib" )
#else
#pragma comment( lib, "opencv_highgui243.lib" )
#pragma comment( lib, "opencv_core243.lib" )
#pragma comment( lib, "opencv_ml243.lib" )
#pragma comment( lib, "opencv_imgproc243.lib" )
#endif
using namespace cv;
三.程序範碼(按鈕事件):
//按鈕Show事件處理...
namedWindow("show_image",WINDOW_AUTOSIZE);
Mat src = imread("../opencv.jpg");
//while(1)
{
imshow("show_image", src);
//char c = waitKey(0);
//if(27 == ' ')
//return 0;
}
//return 0;