OpenCV环境变量配置

时间:2022-12-12 10:52:00

问题

使用C/C++等语言,需要使用第三方程序库,这些函数通常会提供Lib,和Dll,比如说使用OpenCV开发图像处理,视觉软件,除了配置头文件目录(Include),和库文件目录(Lib)。程序运行时候,还需要提供动态链接库,否则,程序提示找不到dll错误。下面以OpenCV的配置说明。

方法

头文件和库文件目录的配置

将头文件目录和库文件配置如下,你对号入座即可。注意Win32X64的不同,一般情况下选择Win32下的库即可。
OpenCV环境变量配置

动态链接库的配置

  • 简单粗暴的方法
    直接将dll复制到C:\Windows或者C:\Windows\System32目录下。警告若是你是64位的系统,请将64位dll(这里是OpenCV的64位dll)放在C:\Windows\System32,32位的dll放在C:\Windows\SysWOW64。为什么这样放,英文好的请看这里http://en.wikipedia.org/wiki/WoW64 中文好的请看这里http://baike.baidu.com/link?url=yXIlxPM2dIcuHv59tL7gGldOqqbO9oGC2byEMLlNtq0_tK99FeaQ7ZyQEP29bSwp_bV85xNJ-f17accEeYpYFa (^-^,其实微软这样设计系统,为了兼容32位程序)。
  • 优雅的方式(极力推荐)
    你可以建立一个系统变量,起个名字,这里我起名字叫做OpenCV300。Look the picture
    OpenCV环境变量配置
    然后在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日 wincoder@qq.com