1. 主页 > vs安装问题 > VS2012安装问题 >

安装visual studio 2012,并配置opencv

在同学的帮助下,终于成功配置了vs+opencv,将详细过程记录在此,方便以后查阅
参考1

本文目录

  • 安装vs2012
  • 安装opencv
  • 在vs2012中配置opencv
  • 测试opencv是否配置成功
  • 关于visual studio的解决方案


安装vs2012

1.下载vs2012安装包并双击进行安装

  • 下载vs2012安装包,官方下载地址

  • 双击安装文件,设置安装路径

这里写图片描述
这里写图片描述

2.选择需要的功能,下面选择了所有的功能,也可以只选择部分功能,如果只需要用到C++,只安装用于C++的微软基础类就可以了
这里写图片描述

3.安装进行中
这里写图片描述
这里写图片描述

4.终于安装完成
这里写图片描述

5.点击启动
这里写图片描述

提示输入产品秘钥
这里写图片描述
YKCW6-BPFPF-BT8C9-7DCTH-QXGWC

激活成功
这里写图片描述

6.出现其它配置页面
这里写图片描述
这里选择C++为默认开发环境
这里写图片描述

7.启动
这里写图片描述

8.注意,本人在安装完vs2012后,出现了兼容性问题,如下图所示
这里写图片描述
发现网络有文章说,这是因为本机同时安装了vs2010和vs2012导致的,需要安装一个更新包,按照其给出的链接,下载了该更新包,并安装:
这里写图片描述
这里写图片描述
这里写图片描述
问题解决。


安装opencv

1.下载opencv源码

  • opencv官网地址:http://opencv.org/,网速有点小慢
    这里写图片描述
  • 点击Download,在弹出的新页面中选择需要下载的opencv版本,这里选择2.4.9
    这里写图片描述
  • 开始下载
    这里写图片描述
  • 大概349MB

2.解压源码

  • 解压路径任意
    这里写图片描述
  • 解压后的源码
    这里写图片描述

3.为opencv配置环境变量
(1)计算机右键“属性”
(2)高级系统设置
(3)点击环境变量

(4)在名称为PATH的环境变量中添加opencv的bin文件夹路径,具体地:
①32位系统,添加:D:\File Program\opencv\build\x86\vc11\bin
②64位系统,添加:
opencv_root\build\x86\vc11\bin(D:\File Program\opencv\build\x86\vc11\bin) (对应于32位系统)
opencv_root\build\x64\vc11\bin(D:\File Program\opencv\build\x64\vc11\bin) (对应于64位系统)
目的是为了可以在编译器Win32和X64中来回切换,其实就是为了使编译可以找到32位的dll,也可以找到64位的dll

  • 注1:D:\File Program\opencv为opencv的解压路径
  • 注2:vc11表示编译环境为Microsoft Visual Studio 2012;
  • 注3:

    vc10 = Visual Studio 2010
    vc11 = Visual Studio 2012
    vc12 = Visual Studio 2013


(5)关于opencv的解压文件
opencv安装后(其实就是解压缩),得到一个名称为opencv的文件夹,该文件夹下有两个子文件件:
  • source:opencv的源代码(opencv是开源的),下面的build文件夹下的各种库就是在这些源代码的基础上利用cMake得到的
    这里写图片描述

    • 该文件夹下有一个modules的文件夹,存放的是各个领域的源代码
  • build:存放的opencv预编译好的各种库,对于使用opencv的使用者来说,只使用该文件夹就够了,不需要自己利用opencv的源代码重新编译得到这些库
    这里写图片描述

    • opencv提供两种库:DLL(动态链接库)和lib库(静态链接库)
      • DLL:假设某个程序调用了DLL,那么生成该程序时,被调用的DLL并不会被整合到生成的.exe文件,只有后续在执行.exe文件时,.exe文件才会调用这些DLL,也就是说,生成的.exe文件需要运行在具有这些DLL文件的机器上,它的好处就是可以使.exe文件比较小
      • lib:在对程序进行生成时,lib库会被build-in到.exe文件中,这样就会使得生成的.exe文件比较大,但.exe文件在执行时,就不需要再外调其他库了,同时,用户也无法对.exe进行任何更改
      • 在使用opencv时,DLL和lib两种库都是被提供的,编程者可以自己选择使用哪种库

在vs2012中配置opencv

在利用vs2012生成调用了opencv的程序时,必须要做的是两件事:

  • 告诉compiler,opencv的库到底长什么样子,也就是,配置include路径
  • 告诉linker去哪里找到opencv的库(lib或者是dll)

下面是详细的设置方法:

1.打开vs2012
2.新建win32控制台应用程序
这里写图片描述
这里写图片描述
这里写图片描述
3.在解决方案资源管理器处:源文件->添加->新建项
这里写图片描述
这里写图片描述
4.在属性管理器处进行配置
(在属性管理器中进行一次配置,就相当于进行了通用的配置过程,以后新建的工程就不用再额外的进行重新配置了)
(1)视图->属性管理器
这里写图片描述
(2)弹出了属性管理器
这里写图片描述
(3)配置Debug Win32
注:这里讨论的是Debug,Release的配置完全类似

  • 在Debug | Win32处的Microsoft.Cpp.Win32.user右键“属性”
    这里写图片描述
  • 弹出Microsoft.Cpp.Win32.user属性页
    这里写图片描述
    (4)开始配置Microsoft.Cpp.Win32.user属性页
    ① 添加包含目录,从而,C++程序可以include opencv(设置VC++目录):

    • 在弹出的属性页中,找到”VC++目录“,在对应的右侧包含目录中,输入opencv的build->include目录
      这里写图片描述
    • 可以看到,opencv->build->include目录下有两个文件夹,应该将该大目录和两个文件夹目录都加入到include目录下
      这里写图片描述
    • 即将如下三个目录都添加到包含目录中

      • opencv_root\build\include(D:\File Program\opencv\build\include)
      • opencv_root\build\include\opencv(D:\File Program\opencv\build\include\opencv)
      • opencv_root\build\include\opencv2(D:\File Program\opencv\build\include\opencv2
        这里写图片描述
    • 关于“Visual Studio 2010项目属性页中“VC++ 目录” ,利用VC+++目录,可以指定如下的目录:

      • 可执行目录:搜索可执行文件的目录。对应于 PATH 环境变量。
      • 包含目录:搜索在源代码中引用的包含文件的目录。对应于 INCLUDE 环境变量。
      • 引用目录:搜索通过 #using 指令在源代码中引用的程序集和模块(元数据)文件的目录。对应于 LIBPATH 环境变量
      • 库目录:搜索库(包括运行时库)的目录。对应于 LIB 环境变量。
      • 源目录:搜索用于 IntelliSense 的源文件的目录。
      • 排除目录:检查生成依赖项时,不会搜索目录。
        这里写图片描述

②添加库目录(即静态链接库的位置)(设置VC++目录)

  • 仍旧在刚刚的VC++目录右侧,在库目录中添加opencv->build->x86->vc11->lib路径
    即:D:\File Program\opencv\build\x86\vc11\lib
    这里写图片描述
  • 注意:这里都是用x64还是x86取决与编译器(而不是操作系统!)
  • 如下图所示,编译器为Win32,那么,就应该选择x86目录下的库
    这里写图片描述

③添加链接库(即动态链接库的名称)(设置连接器)

  • 在“Microsoft.Cpp.Win32.user属性页”的链接器->输入的右侧找到附加依赖项
    这里写图片描述

  • 添加如下dll名称(2.4.9版本-Debug对应的opencv中的动态链接库)(这里只需要指出dll的名称,而不需要指出路径,这是因为存放这些dll文件的路径已经在安装完opencv后,手动添加到了环境变量PATH中了)

    opencv_ml249d.lib
    opencv_calib3d249d.lib
    opencv_contrib249d.lib
    opencv_core249d.lib
    opencv_features2d249d.lib
    opencv_flann249d.lib
    opencv_gpu249d.lib
    opencv_highgui249d.lib
    opencv_imgproc249d.lib
    opencv_legacy249d.lib
    opencv_objdetect249d.lib
    opencv_ts249d.lib
    opencv_video249d.lib
    opencv_nonfree249d.lib
    opencv_ocl249d.lib
    opencv_photo249d.lib
    opencv_stitching249d.lib
    opencv_superres249d.lib
    opencv_videostab249d.lib

    这里写图片描述

  • 注:如果配置的是Release | Win32,那么,需要添加的是如下19个不带d的release版

    opencv_objdetect249.lib
    opencv_ts249.lib
    opencv_video249.lib
    opencv_nonfree249.lib
    opencv_ocl249.lib
    opencv_photo249.lib
    opencv_stitching249.lib
    opencv_superres249.lib
    opencv_videostab249.lib
    opencv_calib3d249.lib
    opencv_contrib249.lib
    opencv_core249.lib
    opencv_features2d249.lib
    opencv_flann249.lib
    opencv_gpu249.lib
    opencv_highgui249.lib
    opencv_imgproc249.lib
    opencv_legacy249.lib
    opencv_ml249.lib

  • 另外,对于opencv2.4.8

    Debug版
    opencv_ml248d.lib
    opencv_calib3d248d.lib
    opencv_contrib248d.lib
    opencv_core248d.lib
    opencv_features2d248d.lib
    opencv_flann248d.lib
    opencv_gpu248d.lib
    opencv_highgui248d.lib
    opencv_imgproc248d.lib
    opencv_legacy248d.lib
    opencv_objdetect248d.lib
    opencv_ts248d.lib
    opencv_video248d.lib
    opencv_nonfree248d.lib
    opencv_ocl248d.lib
    opencv_photo248d.lib
    opencv_stitching248d.lib
    opencv_superres248d.lib
    opencv_videostab248d.lib

  • opencv2.4.8-Release版

    opencv_objdetect248.lib
    opencv_ts248.lib
    opencv_video248.lib
    opencv_nonfree248.lib
    opencv_ocl248.lib
    opencv_photo248.lib
    opencv_stitching248.lib
    opencv_superres248.lib
    opencv_videostab248.lib
    opencv_calib3d248.lib
    opencv_contrib248.lib
    opencv_core248.lib
    opencv_features2d248.lib
    opencv_flann248.lib
    opencv_gpu248.lib
    opencv_highgui248.lib
    opencv_imgproc248.lib
    opencv_legacy248.lib
    opencv_ml248.lib


测试opencv是否配置成功

新建空白win32控制台应用程序
在项目中添加一个cpp,在cpp中输入如下代码
注:一定要保证项目路径下由pic图像!
或者是直接给出图像的绝对路径(这样可以避免路径错误)

#include<iostream>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  


using namespace cv;  


int main()  
{  
    // 读入一张图片(游戏原画)  
    Mat img=imread("pic.jpg");  
    // 创建一个名为 "游戏原画"窗口  
    cvNamedWindow("游戏原画");  
    // 在窗口中显示游戏原画  
    imshow("游戏原画",img);  
    // 等待6000 ms后窗口自动关闭  
    waitKey(6000);  
}  

这里写图片描述

(1)编译
成功,没有编译错误
这里写图片描述

(2)运行程序,成功显示图像
这里写图片描述

注1:如果路径下没有要操作的图像,会出现如下错误
这里写图片描述

注2:如果出现“无法启动应用程序,计算机丢失…….dll文件”的错误,应该就是opencv-dll路径的问题,因为应用程序无法找到它所需要的dll文件,这个时候需要检查一下dll的路径,或者检查设置的dll路径下是否有该dll文件的存在,如果dll路径是在vs开启后修改的,那么,现就该完dll路径后,记得重启一下vs

关于visual studio的解决方案

  • 在visual studio中新建立一个项目project1,该项目属于了一个解决方案,例如,该解决方案的名称为test
  • 在解决方案的路径下(该解决方案的路径名称为test)会有一个test.sln文件、一个SQL文件和一个project1文件夹
    这里写图片描述
  • 想要打开test解决方案时,直接双加test.sln文件或者通过visual studio打开test.sln文件即可
  • 实际上,test.sln是一个解决方案文件,它可以用文本编辑器打开,它包含了与该解决方案相关的一系列内容,例如

    • Microsoft Visual Studio Solution File:用来说明解决方案文件的版本号,12.00 说明是 VS2013 的解决方案文件。
    • VisualStudioVersion:打开这个解决方案文件需要的 Visual Studio 版本号
    • MinimumVisualStudioVersion:能够打开这个解决方案的最低 Visual Studio 版本号
    • Project:解决方案中包含若干个项目,每个项目有一个 Project 的说明,格式为
      Project(项目在解决方案中的编号)=显示名称, 实际路径, 项目唯一标识 ) EndProject
      ,具体见下面的例子
      • 项目唯一标识来自项目文件,在 项目名称.csproj 文件中可以找到如下说明
        这里写图片描述
    • Global:……

    这里写图片描述

下图是“盗用”的他人的一幅解决方案结构图
来自:http://blog.csdn.net/yyhero1/article/details/19272637
这里写图片描述

本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2012anzhuangwenti/2020/0725/4665.html

联系我们

在线咨询:点击这里给我发消息

微信号:PREEE8

工作日:9:30-18:30,节假日休息