在同学的帮助下,终于成功配置了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两种库都是被提供的,编程者可以自己选择使用哪种库
- 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++目录“,在对应的右侧包含目录中,输入opencv的build->include目录
②添加库目录(即静态链接库的位置)(设置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.libopencv2.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 文件中可以找到如下说明
- 项目唯一标识来自项目文件,在 项目名称.csproj 文件中可以找到如下说明
- Global:……
下图是“盗用”的他人的一幅解决方案结构图
来自:http://blog.csdn.net/yyhero1/article/details/19272637
本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2012anzhuangwenti/2020/0725/4665.html