• 【原】64位Win7下配置OpenCV的完整过程


    安装所需要的软件

    下载OpenCV

    1. 从本站下载栏目 http://www.opencv.org.cn/index.php/Download 下载 OpenCV for Windows(也即 OpenCV-2.4.3.exe 文件)。
    2. 将 OpenCV-2.4.3.exe 解压并放到某个目录下,例如 D:\OpenCV 。解压后的目录结构如下图。
    点击看大图
    Enlarge
    点击看大图

    配置VC

    配置include路径

    也即告诉VC去什么地方寻找OpenCV的头文件。

    • 打开VC++ 2010 Express,创建一个Win32控制台程序opencvtest;
    点击看大图
    Enlarge
    点击看大图
    • 选择Solution Explorer里的opencvtest项目,点击鼠标右键,选择Properties。
    点击看大图
    Enlarge
    点击看大图
    • 依次选择“配置属性”->“VC++目录”->“包含目录”,包含 D:\OpenCV\build\include;D:\OpenCV\build\include\opencv;D:\OpenCV\build\include\opencv2

    (这里要注意!这三个include要分成条记录,而且顺序最好是opencv2   opencv  include,没有分号!)

    点击看大图
    Enlarge
    点击看大图
    点击看大图
    Enlarge
    点击看大图
     

    配置lib路径

    也即告诉VC去什么地方寻找OpenCV的库文件。

    在刚才下载的文件OpenCV-2.4.3.exe 里,已经为VC2010预先编译好了动态库和静态库。因此我们不需要如早先版本那样,自己用cmake编译OpenCV。

    • 32位系统 & VC2010,库目录为:D:\OpenCV\build\x86\vc10\lib
    • 64位系统 & VC2010,库目录为:D:\OpenCV\build\x64\vc10\lib

    请根据自己的情况二选一,将库目录输入“属性”->“配置属性”->“VC++目录”->“库目录” 。如下图所示:

    点击看大图
    Enlarge
    点击看大图

    设置环境变量

    刚才设置的是动态库,因此还需要将OpenCV的dll文件所在的目录加入Path环境变量。dll文件目录如下:

    • 32位系统 & VC2010,dll目录为:D:\OpenCV\build\x86\vc10\bin
    • 64位系统 & VC2010,dll目录为:D:\OpenCV\build\x64\vc10\bin

    由于有些函数需要TBB,所以需要将tbb所在的目录也加入到环境变量Path中。TBB相关的DLL路径为:

    • 32位系统 & VC2010:D:\OpenCV\build\common\tbb\ia32\vc10
    • 64位系统 & VC2010:D:\OpenCV\build\common\tbb\intel64\vc10

    如下图所示将OpenCV和TBB的dll文件所在的目录系统环境变量Path中。加入后可能需要注销当前Windows用户(或重启)后重新登陆才生效。

    点击看大图
    Enlarge
    点击看大图
    点击看大图
    Enlarge
    点击看大图
     

    使用OpenCV 2.4.3编程

    • 选择Solution Explorer里的opencvtest项目,点击鼠标右键,选择Properties。
    点击看大图
    Enlarge
    点击看大图
    • 在配置属性-->[链接器 LINKER]的[输入INPUT]中,为项目的Debug配置增加 [附加依赖项 Additional Dependencies]:

    opencv_calib3d243d.lib

    opencv_contrib243d.lib

    opencv_core243d.lib

    opencv_features2d243d.lib

    opencv_flann243d.lib

    opencv_gpu243d.lib

    opencv_highgui243d.lib

    opencv_imgproc243d.lib

    opencv_legacy243d.lib

    opencv_ml243d.lib

    opencv_objdetect243d.lib

    opencv_ts243d.lib

    opencv_video243d.lib (可根据实际需要删减)注意,请打开了新编辑窗口(即点击了“...”按钮)“附加依赖项”,并一条一条分别加入,一条一行(一个回车),(注意行末不要加";")否则会出现类似以下错误:1>LINK : fatal error LNK1104: 无法打开文件“…….lib”

    • 如果下载的OpenCV不是2.4.3版本,请将"XXX243d.lib"中的"243"更改为对应的版本号,例如:下载OpenCV 2.4.0,则统一改为"XXX240d.lib",否则会出现类似以下错误:1>LINK : fatal error LNK1104: 无法打开文件“XXX.lib”
    点击看大图
    Enlarge
    点击看大图
    • 为项目的Release配置增加[附加依赖项 Additional Dependencies]:

    opencv_contrib243.lib

    opencv_core243.lib

    opencv_features2d243.lib

    opencv_flann243.lib

    opencv_gpu243.lib

    opencv_highgui243.lib

    opencv_imgproc243.lib

    opencv_legacy243.lib

    opencv_ml243.lib

    opencv_objdetect243.lib

    opencv_ts243.lib

    opencv_video243.lib (可根据实际需要删减)*

    • 编译运行下面的例程,需要将lena.jpg文件放在项目目录下。如果想双击运行exe的话,图片放在.exe同一文件夹内;按F5直接运行程序的话,lena.jpg要放在opencvtest\opencvtest里)。
    /***********************************************************************
     * 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\n", imagename);
    		return -1;
    	}
     
    	//显示图像
    	imshow("image", img);
     
    	//此函数等待按键,按键盘任意键就返回
    	waitKey();
     
    	return 0;
    }


    当按下F5调试后,若是64位的操作系统,有可能会出现如下错误:
    错误1error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突

    这是因为vs2010的编译平台是x86所致。解决方法:
    点击F5旁边的“Debug”,在下拉链表里边选择“配置管理器”。进入配置管理器后,把Win32改成X64,然后点菜单栏:生成->清理解决方案->重新生成解决方案。OVER。
    具体可以参考下面的链接:
    http://hi.baidu.com/764798/item/fb04d10d3cc66c31f2eafc53





    程序运行结果图,点击看大图
    Enlarge
    程序运行结果图,点击看大图
  • 相关阅读:
    问题堆栈区39+40
    ListView优化分页优化
    AsyncTask理解- Day36or37
    Activity是如何挂载Pargment的Day35
    BroadcastReceiver和Intetnt的理解 Day34
    深入理解自定义ListView
    手势识别=读取手机联系人=ContentResolver-Day3
    Android本地JUnit Text
    Java——(一)一切都是对象
    SciTE: 中文字符支持问题
  • 原文地址:https://www.cnblogs.com/wengzilin/p/2969912.html
Copyright © 2020-2023  润新知