OpenCV环境配置Visual Studio 2010、2012、2013、2015

如果你已经配置了opencv,有问题或者没问题,避免方法冲突可以清掉现有配置,以现在这种方法来实现最佳配置。


下载opencv_ffmpeg2410_64.dll,请放置在C:\Windows\System32\目录下面,let's do it...

1.下载OpenCV:这里选择2.4.10

下载后,我们得到一个7z的exe文件压缩包,双击解压缩到指定目录如下图: 
这里写图片描述

2.修改目录名

a.将build/x86下的vc10、vc11、vc12(如果有vc9、vc13等,一样修改,后面加0即可),修改为vc100、vc110、vc120,如图 
这里写图片描述

b.将build/x64下的vc10、vc11、vc12(如果有vc9、vc13等,一样修改,后面加0即可),修改为vc100、vc110、vc120,如图 
这里写图片描述

c.将build下的x86修改为win32 
这里写图片描述

3.打开visual studio(无论你什么版本都行),这里以vs2013为例,新建一个控制台项目:

这里写图片描述

a.选择配置管理器-新建解决方案平台-选择x64,确定即可,如图: 
这里写图片描述

b.选择视图-属性管理器 
这里写图片描述

c.填入头文件和库文件路径 
这里库的路径是如下,该库路径是全部通用: 
H:\opencv2.4.10\build/$(Platform)/vc$(PlatformToolsetVersion)/staticlib 
这里写图片描述

d.添加宏定义:_CRT_SECURE_NO_WARNINGS 
这里写图片描述

4.写程序

在代码中写下:

#include "stdafx.h"
#include <cv.h>
#include <opencv2/core/core.hpp>
#include <highgui.h>

using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
    Mat img(300, 300, CV_8UC3);
    img.setTo(Scalar(0, 255));
    imshow("Hello OpenCV", img);
    waitKey();
    return 0;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

a.打开cv.h 
这里写图片描述

b.在cv.h中添加一句:#include <opencv/cv_import_static_lib.h> 
这里写图片描述

c.打开core.hpp 
这里写图片描述

d.在core.hpp中添加一句:#include <opencv/cv_import_static_lib.h> 
这里写图片描述

e.core.hpp上点右键,打开core.hpp所在目录,进入到opencv头文件目录下,然后转到:H:\opencv2.4.10\build\include\opencv 
这里写图片描述

f.在目录中新建文本文件.txt,并将如下内容粘贴并保存

#pragma once

#ifdef WIN32
#include <opencv2/core/version.hpp>
//定义宏,保证在debug模式下,导入opencv_xxxd.lib,release模式下导入opencv_xxx.lib
#ifdef _DEBUG
#   define CC_CVLIB(name) "opencv_" name CC_CVVERSION_ID "d.lib"
#   define CC_CVLIB_2(name) "opencv_" name CC_CVVERSION_ID2 "d.lib"
#   define CC_LIB(name) name "d.lib"
#else
#   define CC_CVLIB(name) "opencv_" name CC_CVVERSION_ID ".lib"
#   define CC_CVLIB_2(name) "opencv_" name CC_CVVERSION_ID2 ".lib"
#   define CC_LIB(name)   name ".lib"
#endif

//对于静态库,必须导入如下这些库
#pragma comment(lib, "kernel32.lib")
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "gdi32.lib")
#pragma comment(lib, "Vfw32.lib")
#pragma comment(lib, "winspool.lib")
#pragma comment(lib, "comdlg32.lib")
#pragma comment(lib, "advapi32.lib")
#pragma comment(lib, "shell32.lib")
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")
#pragma comment(lib, "uuid.lib")
#pragma comment(lib, "odbc32.lib")
#pragma comment(lib, "odbccp32.lib")
#pragma comment(lib, "Comctl32.lib")

//如果为3版,导入方式不同
#if CV_MAJOR_VERSION==3
//定义cv的库名称,2410版的,如果是其他版本,则修改为指定的就好了
#define CC_CVVERSION_ID       "2410"
#define CC_CVVERSION_ID2       "300"

//导入静态库依赖
#pragma comment(lib, CC_LIB("IlmImf"))
#pragma comment(lib, CC_LIB("libjasper"))
#pragma comment(lib, CC_LIB("libjpeg"))
#pragma comment(lib, CC_LIB("libpng"))
#pragma comment(lib, CC_LIB("libtiff"))
#pragma comment(lib, CC_LIB("libwebp"))
#pragma comment(lib, "ippicvmt.lib")
#pragma comment( lib, CC_CVLIB("calib3d") )
#pragma comment( lib, CC_CVLIB_2("calib3d") )
#pragma comment( lib, CC_CVLIB("contrib") )
//#pragma comment( lib, CC_CVLIB("core") )
#pragma comment( lib, CC_CVLIB_2("core") )
//#pragma comment( lib, CC_CVLIB("core") )
#pragma comment( lib, CC_CVLIB_2("features2d") )
#pragma comment( lib, CC_CVLIB("features2d") )
#pragma comment( lib, CC_CVLIB_2("flann") )
#pragma comment( lib, CC_CVLIB("flann") )
#pragma comment( lib, CC_CVLIB("gpu") )
#pragma comment( lib, CC_CVLIB_2("highgui") )
#pragma comment( lib, CC_CVLIB("highgui") )
#pragma comment( lib, CC_CVLIB_2("imgcodecs") )
#pragma comment( lib, CC_CVLIB_2("imgproc") )
#pragma comment( lib, CC_CVLIB("imgproc") )
#pragma comment( lib, CC_CVLIB("legacy") )
#pragma comment( lib, CC_CVLIB_2("ml") )
#pragma comment( lib, CC_CVLIB("ml") )
#pragma comment( lib, CC_CVLIB("ocl") )
#pragma comment( lib, CC_CVLIB("nonfree") )
#pragma comment( lib, CC_CVLIB_2("objdetect") )
#pragma comment( lib, CC_CVLIB("objdetect") )
#pragma comment( lib, CC_CVLIB_2("photo") )
#pragma comment( lib, CC_CVLIB("photo") )
#pragma comment( lib, CC_CVLIB_2("shape") )
#pragma comment( lib, CC_CVLIB_2("stitching") )
#pragma comment( lib, CC_CVLIB("stitching") )
#pragma comment( lib, CC_CVLIB_2("superres") )
#pragma comment( lib, CC_CVLIB("superres") )
#pragma comment( lib, CC_CVLIB_2("ts") )
#pragma comment( lib, CC_CVLIB("ts") )
#pragma comment( lib, CC_CVLIB_2("video") )
#pragma comment( lib, CC_CVLIB("video") )
#pragma comment( lib, CC_CVLIB_2("videoio") )
#pragma comment( lib, CC_CVLIB_2("videostab") )
#pragma comment( lib, CC_CVLIB("videostab") )
#pragma comment(lib, CC_LIB("zlib"))
#else
#define CC_CVVERSION_ID CVAUX_STR(CV_VERSION_EPOCH) CVAUX_STR(CV_VERSION_MAJOR) CVAUX_STR(CV_VERSION_MINOR)
//导入静态库依赖
#pragma comment(lib, CC_LIB("IlmImf"))
#pragma comment(lib, CC_LIB("libjasper"))
#pragma comment(lib, CC_LIB("libjpeg"))
#pragma comment(lib, CC_LIB("libpng"))
#pragma comment(lib, CC_LIB("libtiff"))
#pragma comment( lib, CC_CVLIB("calib3d") )
#pragma comment( lib, CC_CVLIB("contrib") )
#pragma comment( lib, CC_CVLIB("core") )
#pragma comment( lib, CC_CVLIB("features2d") )
#pragma comment( lib, CC_CVLIB("flann") )
#pragma comment( lib, CC_CVLIB("gpu") )
#pragma comment( lib, CC_CVLIB("highgui") )
#pragma comment( lib, CC_CVLIB("imgproc") )
#pragma comment( lib, CC_CVLIB("legacy") )
#pragma comment( lib, CC_CVLIB("ml") )
#pragma comment( lib, CC_CVLIB("ocl") )
#pragma comment( lib, CC_CVLIB("nonfree") )
#pragma comment( lib, CC_CVLIB("objdetect") )
#pragma comment( lib, CC_CVLIB("photo") )
#pragma comment( lib, CC_CVLIB("stitching") )
#pragma comment( lib, CC_CVLIB("superres") )
#pragma comment( lib, CC_CVLIB("ts") )
#pragma comment( lib, CC_CVLIB("video") )
#pragma comment( lib, CC_CVLIB("videostab") )
#pragma comment(lib, CC_LIB("zlib"))
#endif //CV_MAJOR_VERSION
#endif
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113

g.将新建文本文件.txt改名为cv_import_static_lib.h

h.回到工程中,修改工程的所有配置属性为静态mfc: 
这里写图片描述

i.点击执行或者按下Ctrl+F5 
这里写图片描述 
正常情况下,应该会出现这个窗口,算正式完成配置 
这里写图片描述

5.后续每个新工程写程序的步骤

a.新建一个win32的工程并按照上面h步(回到工程中,修改工程的所有配置属性为静态mfc)的方法设置 
b.写任何你想要的opencv代码即可直接运行。

6.对于其他OpenCV项目以这种环境运行起来

a.删掉项目中附加依赖项中和opencv相关的lib配置或者代码中以#pragma comment配置的opencv库 
b.设置工程属性为静态mfc 
c.即可执行


基于5和6看,你会发现,使用的时候是相当方便的,不会再受dll所干扰而浪费时间,摸不着头脑。 
并且,这种模式,你能够在win32、x64、debug、release下完全跑起来,而不像之前,会出现很多异常。 
另外,这模式是基于静态库的,也就是发布软件的时候非常方便,不需要携带任何opencv的dll文件。非常有利于做各种事情。 
如果你在vs2010下配置的,那么以这个方式,在2013下也完全能够零改动跑起来。

**最后:如果需要播放视频文件的情况,得把opencv的opencv_ffmpeg249.dll和opencv_ffmpeg249_64.dll复制到c:/windows/目录下即可(静态链接是不会链接上这两个dll的,包括发布程序的时候也需要带上他们)。 
文件在H:\opencv2.4.10\build\win32\vc100\bin里面以及H:\opencv2.4.10\build\x64\vc100\bin里面
**

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值