邮箱已经收到了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. chrome浏览器:chrome 69 恢复默认UI

    1.在浏览器地址栏输入 chrome://flags/#top-chrome-md 并回车 2.将UI Layout for the browser's top chrome 右边的选项修改为Norm ...

  2. 一个分布式 MySQL Binlog 存储系统的架构设计

    1. kingbus简介 1.1 kingbus是什么? kingbus是一个基于raft强一致协议实现的分布式MySQL binlog 存储系统.它能够充当一个MySQL Slave从真正的Mast ...

  3. Introducing Project Kinect for Azure

    https://www.linkedin.com/pulse/introducing-project-kinect-azure-alex-kipman/ Hello everyone! Microso ...

  4. 每日英语:The Benefits of a Better Men's T-Shirt

    "I WEAR A T-shirt and jeans every single day," said Erik Schnakenberg, 30, co-founder of t ...

  5. win7如何不用点击用户名 直接自动登录桌面

    win7如何不用点击用户名 直接自动登录桌面 在win7系统中开机时必须点击相应的用户名才能登陆系统桌面那么如何取消这一功能使当前账户自动登录到系统桌面呢? 1 .在开始菜单搜索框输入 “netplw ...

  6. 李洪强iOS开发之静态库的打包一

    李洪强iOS开发之静态库的打包一 //静态库一般做一下几种事情 //1 工具类 算法逻辑 新建工具类LHQTools 定义类方法 + (NSInteger)sumWithNum1: (NSIntege ...

  7. MyBean-关于plugMap共享对象

    plugMap实现了对象的存储,使用setObject,和getObject来对对象进行存储   内部其实是一个列表,而且他会在释放的时候会情况尝试释放所有的对象,所以如果你共享的对象提前进行了释放, ...

  8. PowerDesigner小技巧

    1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner 快捷工具栏 palette 不见了,怎么重新打开,找回来呢 上网搜索了一下”powerdesigner 图 ...

  9. Python3.5爬取cbooo.cn数据并且同步到mysql中

    #!/usr/local/bin/python # -*- coding: utf-8 -*- # Python: 3.5 # Author: wucl(),zhenghai.zhang # Prog ...

  10. java 多线程12 : 无锁 实现CAS原子性操作----原子类

    由于java 多线程11:volatile关键字该文讲道可以使用不带锁的情况也就是无锁使变量变成可见,这里就理解下如何在无锁的情况对线程变量进行CAS原子性及可见性操作 我们知道,在并发的环境下,要实 ...