邮箱已经收到了Visual Studio 2013的升级通知,但是很多软件如OpenCV、Qt等都只有VS2012的预编译库,还是懒得升级了(除非VS支持C++11了)。
网上搜了一些VS2012(或VS2010)安装OpenCV的教程,抄来抄去很不规范……还是直接参考官方的安装过程靠谱,你可以把本文当作一小部分官方安装指南的中文翻译。
学生可以获取Visual Studio Professional的正版拷贝,就不要去下载什么破解版了,Qt不支持微软免费的Express版本,所以建议学生党不要去考虑Express版。

参考文章:https://www.librehat.com/visual-studio-2012-with-opencv-2-4-7-installation/

OpenCV文件夹的准备

官网下载最新OpenCV的Windows安装程序(其实是一个自解压包),200+MB的体积,双击解压缩到某个分区(如果是SSD的话建议先解压到某个移动硬盘上),

并不是所有文件都是需要的。对于32位Windows系统只需要build文件夹下的以下文件:

如果是64位Windows系统和64位Visual Studio则需要x64文件夹而不是x86文件夹。而且,x86/x64文件夹下,只需要vc11这个文件夹,不需要vc10(vc11对应VS2012,vc10对应VS2010)。

这样一来可以为SSD减轻负担,在D盘创建文件夹openCV_build,把以上需要的build下的文件夹拷贝进去(对于32位系统,openCV_build的内容就和上面截图所示一样)。

设置环境变量

打开管理员模式的命令提示符,运行:

setx -m OPENCV_DIR D:\openCV_build\x86\vc11

-m参数表示该环境变量属于系统范围而非用户范围的值,稍等片刻待提示值已保存后可以关闭cmd了。然后打开计算机属性->高级系统设置->设置环境变量。

在系统变量里找到Path,双击修改,在末尾添加OpenCV的bin(记住要用半角分号隔开),%OPENCV_DIR%\bin

在这里可以使用绝对路径。

如下图所示。使用%OPENCV_DIR%变量的好处是万一下次要变动OpenCV(比如安装了两个版本的OpenCV或者改变了路径),只需要修改%OPENCV_DIR%这个变量即可。

Visual Studio的配置

以Visual Studio 2012和官方指南的Local Method(本地方法)为例,修改某一个工程的属性,添加依赖。(VS2012的项目下的VC++目录功能被否决,无法再用全局方法修改了)

右键单击项目->属性,把弹出窗口左上角的配置更改为“所有配置”,选择配置属性->VC++目录,更改右边的包含目录,编辑,新加一行:

1
$(OPENCV_DIR)\..\..\include

类似地,更改库目录,新加一行:

1
$(OPENCV_DIR)\lib

如下图所示。,这里可添加绝对路径,直接在依赖文件路径和包含库路径中添加即可

在使用opencv时,需要添加调用的库文件和include文件,库文件路径就添加到Library Directory,头文件就添加到Include Directory,在将编译好的.lib文件添加到新建工程中时还需要在

在Configuration Properities -->Linker --> Input -->Additional Dependencies中添加工程中用到的.lib文件的名称

现在修改Debug配置的属性表,在链接器->输入下,修改附加依赖项。这里应该包含所有你需要的OpenCV模块,模块的名称规则是opencv_<module_name><version_number>d.lib,全部模块如下(OpenCV 2.4.7):

1
2
3
4
5
6
7
8
9
10
11
opencv_core247d.lib
opencv_imgproc247d.lib
opencv_highgui247d.lib
opencv_ml247d.lib
opencv_video247d.lib
opencv_features2d247d.lib
opencv_calib3d247d.lib
opencv_objdetect247d.lib
opencv_contrib247d.lib
opencv_legacy247d.lib
opencv_flann247d.lib

然后在Release的配置下再来一次,这一次不要版本号后面的d(d表示debug),完整的模块列表如下:

1
2
3
4
5
6
7
8
9
10
11
opencv_core247.lib
opencv_imgproc247.lib
opencv_highgui247.lib
opencv_ml247.lib
opencv_video247.lib
opencv_features2d247.lib
opencv_calib3d247.lib
opencv_objdetect247.lib
opencv_contrib247.lib
opencv_legacy247.lib
opencv_flann247.lib

编译测试工程

一份简单的测试源码(修改自MrKnight的demo)。

#include <opencv2/opencv.hpp>

#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
    if(argc<)
    {
        cout<<"No parameters.\n"
            <<"You need to specify an image."<<endl;
        exit();
    }
    else
    {
        Mat img = imread(argv[]);
 
        if (img.empty())
        {
            fprintf(stderr, "Error: load image failed.");
            return -;
        }
        namedWindow("image", CV_WINDOW_AUTOSIZE);
        imshow("image", img);
        waitKey();
    }
    return ;
}

编译完成后,需要在命令行下运行,图片的路径作为参数传递给程序。看看能否顺利编译成功,并看到图片吧。

参考文章: Installation in Windows | How to build applications with OpenCV inside the Microsoft Visual Studio

VISUAL STUDIO 2012下的OPENCV 2.4.7安装过程的更多相关文章

  1. Visual Studio 2012下Box2D开发环境设置

    Cocos2d-x 3.x默认情况下采用的物理引擎是Chipmunk,如果我们要使用Box2D引擎,需要进行一些设置和调整,而且不同的开发平台下这些设置也有所不同.由于本书在此之前介绍的都是基于微软的 ...

  2. Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法

    参考:Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法 Vs2012的下载地址: https://msdn.microsoft.com/en ...

  3. AE10.0在Visual Studio 2012下安装没有模板(转)

    转自百度经验: VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及 ...

  4. Visual Studio 2012使用NUnit单元测试实践01,安装NUnit并使用

    在Visual Studio 2012中,默认使用Microsoft自带的MS-Test测试框架.但,Visual Studio同样允许使用第三方测试框架,比如NUnit,xUnit,MbUnit,等 ...

  5. Windows7下Blend for Visual Studio 2012使用问题

    目前开发的系统里很多控件样式和动画比较复杂,应该是之前同事用Blend做的,这种神器不用太浪费了,自己也准备试试. 系统环境Windows7+Visual Studio 2012 1.Windows7 ...

  6. 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)

    前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容.在第一部分中,将对 ...

  7. 用Visual Studio 2012+Xamarin搭建C#开发Andriod的环境

    第一步:安装Visual Studio: Visual Studio 2012(或者Visual Studio 2010),原因是目前为止Xamarin for Visual Studio的插件只支持 ...

  8. 在Visual Studio 2012中使用VMSDK开发领域特定语言1

    在Visual Studio 2012中使用VMSDK开发领域特定语言(一)   前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modelin ...

  9. opencv 2.46与visual studio 2012 配置方法

    一开学就搞实训,还是没学过的图像处理.痛苦啊!图像处理时一般使用Matlab中的图像工具箱,或者是C/C++和OpenCV结合使用.以前看过一些关于opencv的文章,没想到现在要用上了. 把搭建开发 ...

随机推荐

  1. Atitit 切入一个领域的方法总结 attilax这里,机器学习为例子

    Atitit 切入一个领域的方法总结 attilax这里,机器学习为例子 1.1. 何为机器学习?1 1.2. 两类机器学习算法 :监督式学习(Supervised Learning)和非监督式学习( ...

  2. modelsim编译Xilinx器件库的另一种方法(节省时间)

    以前在用modelsim对Xilinx进行器件库编译时,我用的比较多的是直接在ISE中编译器件库,感觉很方便简单,就是编译时间有点长.自从前段时间,在自己电脑装MathType,360杀毒软件将它视为 ...

  3. iOS编程中比较两个日期的大小

    转自:http://www.myext.cn/other/a_30922.html 比较日期大小是任何编程语言都会经常遇到的问题,再iOS编程中,通常用NSDate对象来存储一个时间(包括日期和时间. ...

  4. Unity Shaders and Effects Cookbook (4-1)(4-2)静态立方体贴图的创建与使用

    開始学习第4章 - 着色器的反射 看完了1.2节,来记录一下.反射主要是利用了 Cubemap 立方体贴图. 认识Cubemap 立方体贴图.就如同名字所说.在一个立方体上有6张图.就这样觉得吧. 假 ...

  5. SQL分页参数传值 在存储过程中使用 动态SQL实现

    PROCEDURE [dbo].[SP_GetList] ( ), @arrearsStatus int, , --最小ID , --每页显示记录数 ) ) AS ); declare @strSQL ...

  6. [Windows Azure] Administering your Windows Azure AD tenant

    Administering your Windows Azure AD tenant 19 out of 20 rated this helpful - Rate this topic Publish ...

  7. vs code 快捷键的使用

    vs code 快捷键的使用 shift + f12 快速查找函数的生成Ctrl+F12 查看单个函数的定义Shift+F12 查看所有函数的定义ctrl + ` 是打开运行的程序ctrl + Tab ...

  8. spring batch中MyBatisPagingItemReader分页使用介绍

    假如是mysql的话,SQL语句 <![CDATA[select * from ( SELECT so.* FROM t_tm_sales_order so where so.last_modi ...

  9. golang深度获取子节点

    起因 需要在树形结构里获取子树,树形结构一般是存储一维数组,数组元素里存储子节点的指针 代码 package main import ( "errors" "fmt&qu ...

  10. 【Unity笔记】寻路导航Navigation中的区域Areas与消耗Cost

    Navigation寻路导航界面下,Areas分页下是在给导航区域分类(相当于分层),以及为每个分类设置不同的消费Cost,意义在于,导航算法中会计算出的是累加起来消耗最低的路径(不一定是视觉上最短可 ...