1. 程式人生 > >OpenCV環境變數配置

OpenCV環境變數配置

問題

使用C/C++等語言,需要使用第三方程式庫,這些函式通常會提供Lib,和Dll,比如說使用OpenCV開發影象處理,視覺軟體,除了配置標頭檔案目錄(Include),和庫檔案目錄(Lib)。程式執行時候,還需要提供動態連結庫,否則,程式提示找不到dll錯誤。下面以OpenCV的配置說明。

方法

標頭檔案和庫檔案目錄的配置

將標頭檔案目錄和庫檔案配置如下,你對號入座即可。注意Win32X64的不同,一般情況下選擇Win32下的庫即可。
這裡寫圖片描述

動態連結庫的配置

  • 優雅的方式(極力推薦)
    你可以建立一個系統變數,起個名字,這裡我起名字叫做OpenCV300。Look the picture
    這裡寫圖片描述

    然後在path裡面新增完整的dll路徑,在這裡我是如此%OpenCV300%\build\x86\vc10\bin,請君對號入座,很簡單的。
    優雅的方式確實可以使我們的系統盤不至於那麼亂。然後重新開機什麼的,NO,這裡只需要重啟一下Visual Studio就可以了。(網上說重啟開機什麼噠全是騙人的,都是壞人)。環境變數只是系統設定一些變數引數,就像我們寫C/C++那樣,程式啟動時候載入,也就是說每次Visual Studio啟動的時候載入一次,中間你若更改了path設定,Visual Studio是不知道的。你把它關了,再開啟就可以。

Lib的引用

Lib有Debug版本和Release版本,混淆使用,會出現意外的錯誤,例如imread讀入影象為空等。我建議如下方式引用。

//include opencv lib
#ifdef _DEBUG
#pragma comment(lib, "opencv_core246d")
#pragma comment(lib, "opencv_imgproc246d")
#pragma comment(lib, "opencv_highgui246d")
#pragma comment(lib, "opencv_legacy246d")
#else 
#pragma comment(lib, "opencv_core246")
#pragma comment(lib, "opencv_imgproc246")
#pragma comment(lib, "opencv_highgui246")
#pragma comment(lib, "opencv_legacy246") #pragma comment(lib, "opencv_calib3d246") #pragma comment(lib, "opencv_contrib246") #pragma comment(lib, "opencv_core246") #pragma comment(lib, "opencv_features2d246") #pragma comment(lib, "opencv_flann246") #pragma comment(lib, "opencv_gpu246") #pragma comment(lib, "opencv_haartraining_engine") #pragma comment(lib, "opencv_highgui246") #pragma comment(lib, "opencv_imgproc246") #pragma comment(lib, "opencv_legacy246") #pragma comment(lib, "opencv_ml246") #pragma comment(lib, "opencv_objdetect246") #pragma comment(lib, "opencv_ts246") #pragma comment(lib, "opencv_video246") #endif

例如我使用的是OpenCV300版本,是將該程式碼寫在一個頭檔案裡面,起一個名字叫opencvlib300.h。然後放在VS的標頭檔案目錄下面,或者編譯器可以找到的地方。

/***
*opencvlib300.h - definitions and declarations for math library
*
*       Copyright (c) wincoder. All rights reserved.
*
*Purpose:
*       This file contains constant definitions and external subroutine
*       declarations for the math subroutine library.
*       [ANSI/System V]
*
*       [Public]
*
****/

#ifndef _INC_OPENCV300
#define _INC_OPENCV300

//include opencv lib
#ifdef _DEBUG
#pragma comment(lib, "opencv_ts300d")
#pragma comment(lib, "opencv_world300d")
#else 
#pragma comment(lib, "opencv_ts300")
#pragma comment(lib, "opencv_world300")
#endif

#endif

在需要使用的標頭檔案直接新增下面一行程式碼即可

#include <opencv300lib.h>

好了,可以愉快的開始程式設計之旅了。

轉載請保留以下資訊

作者 日期 聯絡方式
風吹夏天 2015年5月27日 [email protected]