一名热爱体感技术的
业余专业开发人员

[OpenCV配置]OpenCV2.X在Win7 Win8 VS2010 VS2012下的配置(附文档+视频 吐血之作)

如想了解如何配置OpenCV3.X,请点我跳转到最新的配置视频

[视频内容开始][优酷视频放在最后]

优酷视频链接稍后给出,先给出SkyDrive上的视频共享地址https://skydrive.live.com/redir?resid=76E4F6E8AB62619!105,下载这个比较小,并且十分清楚。

背景介绍

概述

OpenCV(Open Source Computer Vision)在BSD开源协议(介绍)下发布,可以研究也可以被商用。它有C++,C,Python和Java的函数接口。支持Windows、Linux、Mac OS、iOS和Android操作系统。OpenCV具有高效的计算效率,专注于实时程序应用设计。在优化过的C/C++语言下,OpenCV可以充分利用多核处理器的性能。在全世界,超过47万人使用,600万次下载。不论是互动艺术、矿山监察、地图拼接或者机器人应用,都可以看到OpenCV的踪影。

配置过程

准备步骤

明确自己的电脑配置

对计算机右键–>选择属性,查看自己电脑的配置。看到“系统类型”,告诉我们电脑是32位(x86)构架的,还是64位(x64)构架的?

确认自己所安装软件开发平台。

即确认IDE(Integrated Development Environment,集成开发环境)是什么版本,是Visual Studio 2010还是VS2012?[什么版本不重要,本教程使用2012做例子,其它版本类似,都可以找到相应的选项]

下载OpenCV

在网站http://opencv.org/右侧,点击OpenCV for Windows下载。

具体配置

解压缩

把OpenCV-2.X.X解压并放到某个目录下,例如 D:\OpenCV 。(我的是在F:\Softs\OpenCV245下面,记住这个地址,下面要用)

配置系统环境变量

对计算机右击–>属性–>高级系统设置–>高级–>环境变量

如果没有这个Path变量,就自己添加一个,我的路径是:

F:\Softs\OpenCV245\opencv\build\x86\vc11\bin

VS2008选择VC9,VS2010选择VC10,VS2012选择VC11

X86还是x64,随意选择

注意,添加完毕后需要注销再重新登入此用户

创建Win32控制台应用程序或者Win32项目(必须建一个)

点击完成

打开属性页管理器

视图–>属性页管理器–>选下方的“属性管理器”。(VS2010中可以在“其它窗口”中找到)

展开OpenCV_Win32,看到Microsoft.Cpp.Win32.user,对它右键选择属性,选择VC++目录。

配置include和lib路径

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

然后对VC++目录下选项进行添加:

(1)Library Directories(库目录)

F:\Softs\OpenCV245\openv\build\x86\vc11\lib

(2)Include Directories(包含目录)

F:\Softs\OpenCV245\opencv\build\include\opencv

F:\Softs\OpenCV245\opencv\build\include\opencv2

F:\Softs\OpenCV245\opencv\build\include

添加链接库(初学者全部添加,熟悉后根据所需要的模块添加)

opencv_core245d.lib

opencv_imgproc245d.lib

opencv_highgui245d.lib

opencv_ml245d.lib

opencv_video245d.lib

opencv_features2d245d.lib

opencv_calib3d245d.lib

opencv_contrib245d.lib

opencv_legacy245d.lib

opencv_flann245d.lib

opencv_gpu245d.lib

运行一个简单的例子(许多网站都有代码,视频中会有详细演示)

打开lena.tiff,如果成功打开,说明opencv配置成功!

其它注意

我们创建的是Win32程序,不论是32位电脑还是64位电脑,配置方法都一样,都可以使用这种x86配置方法。

 

配置路径地址有很多方法,比如在MFC中,我们无法唤出“属性页管理器”,可以使用普通方法配置。

 

Release的配置

和Debug一致,只是lib库名字最后没有那个d英文字符。

 

高级版本的OpenCV都是支持低级版本的,一般情况下越新的越好。

 

发布程序时,把dll一并发布,如果是debug程序还需要包含IDE环境的dll,可以百度问下放在电脑哪个文件夹。(有时还缺少提示其它dll文件,最好在没有vs2010和opencv的电脑上测试成功后再发布给别人)[本人暂时不会使用staticlib编译成不需要dll的程序,如果有会的人,欢迎写教程告知]

 

安装部分结束

如果有任何错误请向我提出,我会将错误在文档中进行更正。(截止2013-9-4没人留言呢)

[视频结束]

 

额外拓展(有相对应的视频)

进阶

更佳的环境变量OPENCV_DIR

配置环境变量也有很多方法,比如我们可以设置一个名字叫OPENCV_DIR的变量给出OpenCV的build文件夹所在路径。这样在OpenCV版本变换时,我们只需要修改这个环境变量即可。

根据需要添加lib

参见word文档

OpenCV路径个文件夹的作用

bulid文件夹是最重要的,其它文件夹删除不会影响opencv的运行。

特别注意samples下的例子如何运行

全部在项目的属性里配置

不去“属性页管理器”配置,直接在项目的属性页里配置,这样每个OpenCV项目都需要配置一次。

Image Watch插件

OpenCV调试必备,前提:使用VS2012。OpenCV.org上可以下载到。—->演示一下

Visual Assist X

可以在百度云下载。

官方学习文档汇总

http://brightguo.com/opencv

或者

http://blog.csdn.net/guoming0000/article/details/8839055

学习网站

英文官网 : http://opencv.org/

中文官网 : http://www.opencv.org.cn

QQ群

Opencv机器视觉图像处理  168464304    116/500人

计算机视觉(一)   130541036       217/500人

图像学技术       77351873          650/1000人

CvChina计算机视觉论坛       133654392   244/500人

参考

http://www.opencv.org.cn/index.php/VC_2010_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.4.3

http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=14545

http://u.youku.com/此人无情   他做了一系列opencv(c语言接口+windows)的视频教程。

附录

官方学习文档

OpenCV2.4.5  2013-4-23更新

OpenCV for Windows
OpenCV for Linux/Mac
OpenCV for Android
OpenCV for iOS

1.离线文档(PDF)

参考手册Reference Manual

教程 Tutorials

用户手册 User Guide

C++备忘 C++ Cheatsheet

2.在线文档

参考手册 Reference Manual

用户指南 User Guide

教程 Tutorials

Java API

各种语言例子代码

3.其它OpenCV学习书本

(1)使用OpenCV开发机器视觉项目Mastering OpenCV with Practical Computer Vision Projects

书本PDF下载

完整项目源代码下载

我写的中文介绍

OpenCV官网介绍

(2)OpenCV 2 Computer Vision Application Programming Cookbook

书本PDF下载

(3)Learning OpenCV computer vision with the OpenCV library

书本PDF下载

(4)OpenCV算法实现参考文献(25个pdf)

zip下载

后话

两年前,我因为本科毕设有幸接触到OpenCV,之后读研仍然进行图像方面的研究。由于OpenCV的运算高效性,许多大学和公司借助它进行算法开发。遇到最多的问题就是配置问题,每年总是有许多人询问。制作此文以及视频,是节省更多的人的时间,尤其是那些已经不厌其烦帮助一个又一个菜鸟成功配置OpenCV的好人们~

视频

OpenCV配置 Win7 Win8 VS2010 VS2012

 

OpenCV简单了解

评论 31

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #9

    好厉害,按照你的方法成功了,图片是jpg格式。继续学习中。谢谢

    侯俊岭3年前 (2015-03-15)回复
  2. #8

    1.视频中就是使用win8配置的,请认真看
    2.都是一样的
    多配置几次就会熟练,每个人配置时犯的错误都不同

    小明4年前 (2015-01-21)回复
  3. #7

    win8系统配置opencv时有什么要注意的吗?跟win7下有什么不同吗?

    追问4年前 (2015-01-21)回复
    • 1.视频中就是使用win8配置的,请认真看2.都是一样的多配置几次就会熟练,每个人配置时犯的错误都不同

      小明4年前 (2015-01-21)回复
  4. #6

    大哥你好,我用的win8系统,vs2013,opencv3.0运行其他程序还好,可是定义的cascadeclassfier的对象后,无法将.mxl文件导入到对象中,我试了2.4.9版本也不行。后来在另一台电脑win7系统下用2.4.9版本成功了。这个问题怎么解决?是配置问题吗?

    求助4年前 (2015-01-21)回复
    • win8下我没写过分类器的代码,我觉得可能:1.中文路径问题,使用英文路径 2.使用绝对路径 3.使用多字节字符,而不是Unicode,都试试看,如果成功了,告诉我下

      小明4年前 (2015-01-21)回复
      • 大哥,还没成功,不过我换了台win732位电脑就没有问题。您说的第三点使用多字节字符,而不是unicode是什么意思,不太懂。前两点都试过了,还是不行。

        追问4年前 (2015-01-27)回复
        • 是项目属性里面的东西,不行就用win7吧~~不晓得什么原因

          小明4年前 (2015-01-27)回复
      • 难道要用cmake?cmake我不会

        追问4年前 (2015-01-27)回复
        • 不用cmake啦,我也不会,那个还是不要碰啦

          小明4年前 (2015-01-27)回复
          • 我回头试试改属性里的unicode,谢谢

            追问4年前 (2015-01-27)
          • 今天又配一台电脑,vs2012配opencv3.0,可是出现link2019无法解析的外部信号crtdbgreport,该符号在函数“void_cdecl std::debug_message(wchart const。。。。。)中被引用”link11201个无法解析的外部命令

            追问4年前 (2015-01-28)
          • 配置选项有问题,可能和 MD,MT,MTD这些有联系吧,我也不太懂

            小明4年前 (2015-01-29)
          • 我解决了,您说的对,是模式选错了,我选了mt模式,应该选mtd模式。

            追问4年前 (2015-01-29)
  5. #5

    出現這段ERRO是什麼問題嗎?
    error LNK2019: unresolved external symbol __imp_NuiImageStreamReleaseFrame referenced in function main
    error LNK2019: unresolved external symbol __imp_NuiImageStreamGetNextFrame referenced in function main
    error LNK2019: unresolved external symbol __imp_NuiShutdown referenced in function main
    error LNK2019: unresolved external symbol __imp_NuiImageStreamOpen referenced in function main
    error LNK2019: unresolved external symbol __imp_NuiInitialize referenced in function main
    C:Userslouislai080DocumentsVisual Studio 2010Projectsqwex64Debugqwe.exe : fatal error LNK1120: 5 unresolved externals

    微風論4年前 (2014-06-12)回复
    • 你这个是Kinect的路径没有配置好,头文件、lib路径。请百度搜索vs对kinect sdk相关配置方法。

      箫鸣4年前 (2014-06-12)回复
  6. #4

    刚才那个问题解决了,现在没有任何报错,出来黑框之后弹出“无法正常启动0xc000007b” 不知道怎么回事

    章鱼烧&kenny5年前 (2013-11-22)回复
    • 那还是配置错误原因吧。你是不是把x64和x86的库文件之类弄混了呢。你可以把你的项目,以及问题写邮件告诉我 guoming0000@sina.com

      箫鸣5年前 (2013-11-22)回复
      • 谢谢你,已经解决了,是版本的问题,我用的12导入的Opencv 下面v10的东西。现在已经OK了

        章鱼烧&kenny5年前 (2013-11-26)回复
        • 嗯,以后都要注意~其他SDK也会有这个问题

          箫鸣5年前 (2013-11-27)回复
  7. #3

    您好,我按照您的配置,出了一些问题。 我的环境是64位系统,win7, vs2010, opencv2.3.0 运行你视频里面那个打开lean.tiff的示例程序的时候出现了错误,我把错误贴出来,望能解答。

    1>PrepareForBuild:
    1> 正在创建目录“D:visual studio 2010ProjectsTemp for opencv settingDebug”。
    1>InitializeBuildStatus:
    1> 正在创建“DebugTemp for opencv setting.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
    1>ClCompile:
    1> stdafx.cpp
    1> Temp for opencv setting.cpp
    1>d:softwareopencv2.3buildincludeopencv2flannlogger.h(70): warning C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1> d:kinectvssoftwarevcincludestdio.h(234) : 参见“fopen”的声明
    1>d:visual studio 2010projectstemp for opencv settingtemp for opencv settingtemp for opencv setting.cpp(10): warning C4129: “s”: 不可识别的字符转义序列
    1>d:visual studio 2010projectstemp for opencv settingtemp for opencv settingtemp for opencv setting.cpp(10): warning C4129: “l”: 不可识别的字符转义序列
    1>opencv_highgui230d.lib(opencv_highgui230d.dll) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突

    章鱼烧&kenny5年前 (2013-11-22)回复
  8. #2

    你这个是控制台程序,你对于argc和argv理解不够,可以自己搜搜看他们什么意思,该如何执行这个程序。不建议使用这种方式运行程序,把参数改成文件实际地址比较好。

    箫鸣5年前 (2013-10-26)回复
    • 恩,就是按照视频里的方法吧?我试过了,argc和argv我也在网上查过了,但是还是不清楚有什么用。

      nanyoullm5年前 (2013-10-28)回复
      • 把他们改成变量和 常量,用实际文件名字代替。实在不会,问一个学c语言比较好的人,语言描述不清楚这个基础问题~

        箫鸣5年前 (2013-10-28)回复
      • qq就不加了,加了也会删掉的~包涵哈~但任何留言都会回复的

        箫鸣5年前 (2013-10-28)回复
  9. #1

    你好!我是opencv的初学者。我看了你写的配置及简单应用资料,我觉得写得非常好,很直接容易操作。谢谢!
    我有个简单的问题想请教你:
    我在学习2.4.6版本的官方tutorial的1.13Load and Display an Image时,我按照教程在VS2012环境下遍写提供的代码(包括#include“stdafx.h”,主函数int _main(int argc,_TCHAR*argv[]),这个和教程上的不同,不过我觉得应该没影响)之后点击运行。所获得的结果只是显示了一行:Usage : display_image ImageToAndDisplay .这句,没有像教程上运行结果一样。我在网上查了也没找出原因。我也不知道为什么代码里没有出现图片的路径和名称信息,教程代码运行能显示出一张“鱼”的图片。还有我注意到教程的系统好像是Linux。是和这个有关吗?
    请您指教!
    qq:714200277

    nanyoullm5年前 (2013-10-23)回复
    • 请把代码贴出来,我只会windows下的。

      箫鸣5年前 (2013-10-23)回复
      • 不好意思,这几天没网,所以现在才回复。
        #include "stdafx.h"
        #include <opencv2/core/core.hpp>
        #include <opencv2/highgui/highgui.hpp>
        #include <iostream>

        using namespace cv;
        using namespace std;

        int main(int argc, char** argv)
        {
        cout<<"argc = "<<argc<<endl<<argv<<endl;
        if(argc != 2)
        {
        cout << "Usage : display_image ImageToloadAndDispaly"<<endl;
        return -1;
        }
        Mat image;
        image = imread(argv [ 1 ],CV_LOAD_IMAGE_COLOR); //Read the file

        if(! image.data)
        {
        cout<<"Could not open or find the image"<<std::endl;
        return -1;
        }

        namedWindow("Display window",CV_WINDOW_AUTOSIZE); //Creat a window for display
        imshow("Display window",image); //Show our image inside it

        waitKey(0);

        return 0;
        }
        这是源代码,VS2012.

        nanyoullm5年前 (2013-10-26)回复
      • 不好意思,这几天没网,所以现在才回复。
        #include "stdafx.h"
        #include <opencv2/core/core.hpp>
        #include <opencv2/highgui/highgui.hpp>
        #include <iostream>

        using namespace cv;
        using namespace std;

        int main(int argc, char** argv)
        {
        cout<<"argc = "<<argc<<endl<<argv<<endl;
        if(argc != 2)
        {
        cout << "Usage : display_image ImageToloadAndDispaly"<<endl;
        return -1;
        }
        Mat image;
        image = imread(argv [ 1 ],CV_LOAD_IMAGE_COLOR);//Read the file

        if(! image.data)
        {
        cout<<"Could not open or find the image"<<std::endl;
        return -1;
        }

        namedWindow("Display window",CV_WINDOW_AUTOSIZE);//Creat a window for display
        imshow("Display window",image);//Show our image inside it

        waitKey(0);

        return 0;
        }
        这是源代码,VS2012.

        nanyoullm5年前 (2013-10-26)回复