Win7-64位系统-VS2010下配置opencv2.3.1

OpenCV中文网(http://www.opencv.org.cn/index.php)上给出的关于64位系统的配置是有问题的,下面这个方案是我参考网上的一些配置方案修正过的。

1、下载 OpenCV-2.3.1.exe ,解压并放到某个目录下,例如 D:OpenCV

2、配置环境变量:在path环境变量中添加D:OpenCVuildx64vc10in以及D:OpenCVuildcommon bbintel64vc10,中间以分号隔开;2.4.3版本的opencv内嵌了TBB的功能,所以取消了TBB直接安装,这样就不需要再配置TBB环境变量了。重启,使之生效(不重启貌似也行)。安装路径不同,对照修改即可,如安装在E:OpenCV,则相应修改路径即可,下面不再赘述。

以下为使用opencv时的配置过程,每个项目都需要重复以下过程,如果嫌麻烦,你也可以配置好以后,将项目配置保存为一个模板,供下次直接使用。

3、 新建一个C++的win32控制台程序;

4、点击“项目”—“属性”,在弹出的对话框最上方选择“配置管理器”按钮,在弹出的“配置管理器”对话框中,点击右边的“活动解决方案平台(P)”的下拉列表,点击“新建”

弹出“新建解决方案平台”对话框,

在“键入或选择新平台”中选择“x64”,“从此处复制设置”中选择”Win32”,勾选“创建新的项目平台”,点击确定。返回“配置管理器页面”,点击“关闭”。

附注:这里项目平台指的是应用程序运行的平台,若用默认win32,则生成的程序不能在你本机64下运行

5、在“配置属性”—“C/C++”—“常规”—“附加包含目录”中,添加目录:

D:OpenCVuildinclude

D:OpenCVuildincludeopencv

D:OpenCVuildincludeopencv2

注意:这里OpenCV中文网上(http://www.opencv.org.cn/index.php/VC_2010_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.4.3)说的是在“VC++ 目录”子项下的附加包含目录里添加这些头文件目录,但这可能导致覆盖掉VC++编译本身需要的一些头文件目录,导致编译错误。我的电脑上反正不行,大家可以试一下。

6、在“链接器”—“常规”—“附加库目录”中,添加目录:

D:OpenCVuildx64vc10lib

7、 在“链接器”—“输入”—“附加依赖项”中添加以下库文件(根据需要删减,若是其他版本则对应修改数字即可,如2.4.3版本,将231改为243即可):

opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib

点击“应用”-“确定”,返回主界面。

此外,也可采用在主函数中添加类似

#ifdef _DEBUG
#pragma comment(lib,"opencv_core230d.lib")
#pragma comment(lib,"opencv_highgui230d.lib")
#pragma comment(lib,"opencv_imgproc230d.lib")
#else
#pragma comment(lib,"opencv_core230.lib")
#pragma comment(lib,"opencv_highgui230.lib")
#pragma comment(lib,"opencv_imgproc230.lib")
#endif

代码的方式,这样不管debug还是release均能适用,不用人为重复

8、添加测试代码:

/***********************************************************************
 * OpenCV 2.4.3 测试例程
 * 于仕琪 提供
 ***********************************************************************/
#include "stdafx.h"
 
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const char* imagename = "lena.jpg";
 
    //从文件中读入图像
    Mat img = imread(imagename);
 
    //如果读入图像失败
    if(img.empty())
    {
        fprintf(stderr, "Can not load image %s
",  imagename);
        return -1;
    }
 
    //显示图像
    imshow("image", img);
 
    //此函数等待按键,按键盘任意键就返回
    waitKey();
 
    return 0;

生成项目解决方案,若成功,则说明配置完成。

9、上面都是Debug版本的配置,若是Release版本的配置,同理,除了库文件所有项中去掉d即可。

原文地址:https://www.cnblogs.com/rolling-stone/p/3204699.html