转自:ios
这篇文章做为OpenCV的启程篇,天然少不了先系统地介绍OpenCV开发环境的配置。web
在官网:http://opencv.org/上找到OpenCV windows版下载下来。windows
下载完后获得文件OpenCV 2.4.8,双击后会提示解压到某个地方,推荐放到D:\Program Files\下,好比D:\Program Files,(由于OpenCV项目文件打包的时候,根目录就是opencv,因此咱们不须要额外的新建一个名为opencv的文件夹,而后再解压,那是 画蛇添足的事情)而后点击Extract按钮
有些奇怪的是,浅墨在经历OpenCV 2.4.6,OpenCV 2.4.7,OpenCV 2.4.8这三个版本之间转换的时候,这三个版本的OpenCV存放在硬盘的不一样的目录下。但就没动过这步里面的环境变量,或许新版本的OpenCV已经 弱化了环境变量的配置。因此,你们能够先跳过这步,若是最终配置出来报错的话呢,能够考虑下根据实际状况加上这步的配置。ide
这步的配置方法以下:测试
计算机->(右键)属性->高级系统设置->高级(标签)->环境变量->(双击)path(用户,系统里面的path任选其一)->在变量值里面添加相应的路径。ui
对于32位系统,就添加:spa
”…… opencv\build\x86\vc10\bin”操作系统
而对于64位系统,能够两个都添加上:.net
”…… opencv\build\x86\vc10\bin”debug
和”…… opencv\build\x64\vc10\bin”,
这样,到时候才能够在编译器Win32和X64中来回切换都吃得开,游刃有余~
例如,浅墨的就是
D:\Program Files\opencv\build\x64\vc10\bin;D:\ProgramFiles\opencv\build\x86\vc10\bin
注:变量值实际为bin文件夹的路径;D表示OpenCV安装于D盘;X64表示运行系统环境位64位系统,若安装于32位系统,应为X86;vc10表示编译环境为Microsoft Visual Studio 2010;变量添加完成后须要注销系统,才会生效。
看我以前DirectX配置的相关博文的朋友们应该都知道,有一招叫属性管理器,点进去,到
<视图>--<属性管理器>
打开熟悉的属性页面后,就是一番配置了。首先是在
【通用属性】 ->【VC++目录】 ->【包含目录中】
添加上
D:\Program Files\opencv\build\include
D:\Program Files\opencv\build\include\opencv
D:\Program Files\opencv\build\include\opencv2 这三个目录。
添加上D:\ProgramFiles\opencv\build\x86\vc10\lib这个路径。
这里选择x86仍是x64是一个经常使人困惑的问题。固然,对于32位操做系统,铁定就是选x86了。
若是是64位操做系统,不少童鞋会想固然自做聪明地选择x64,其实否则。正确的理解是这样的:
无论你是32位仍是64位操做系统,只用管你用win32编译器仍是X64编译器。
其实配置选择什么跟64位仍是32位系统没有直接的关系,而是在于你在编译你的程序的时候是使用那个编译器。
编译器选的是win32,就用x86
编译器选的是X64,就用X64。不过通常状况下,都是用的win32的X86编译器。因此,不管32仍是64位操做系统,配置文件最好都选择x86版的
另外,这里的vc10表示vs2010,若是是其余版本的visual studio,稍微要微调一下。
属性管理器”工做区中,点击项目 ->Debug|Win32->Microsoft.Cpp.Win32.userDirectories(反键属性,或者双击)便可打开属 性页面。【通用属性】 ->【连接器】->【输入】->【附加的依赖项】
须要注意的是,所粘贴内容即为D:\opencv \build\x86\vc10\lib下全部lib库文件的名字;其中的248表明咱们的OpenCV版本为2.4.8,如果其余版本的配置则在这里要 进行相应的更改,好比说2.4.6版的OpenCV,那么这里的opencv_calib3d248d.lib就要改为 opencv_calib3d246d.lib了.
Debug文件库名有d结尾,Release没有,如 opencv_ts248d.lib和opencv_ts248.lib
不过我通常是在这里把带d和不带d的通通写在这里,由于这里是之后建立全部工程时都会继承的公共属性。
Opencv2.4.9的库文件以下
注意: 按照如上的这种方式来配置,也许会出现debug下能够运行可是release下不能运行的状况(诸如图片载入不了,报内存错误),这算是OpenCV自 2.4.1以来的一个bug。若是出现上述状况,打开当前工程(注意是当前工程的属性页,不是通用属性页)的属性页,debug或者release哪一个报 错,就把对应的带d或不带d的lib添加到【“当前”工程属性】->【连接器】->【输入】->【附加的依赖项】下便可。
相似错误如图:
这一步是各类介绍OpenCV的配置的相关博文中都没写出来的。根据这些博文配置出来的环境,在运行基于OpenCV的程序的时候,每每会获得这样相似的结果:
这种问题最简单粗暴的方法,是把相关的dll都拷贝到Windows操做系统的目录下。若是你的Windows安装在C盘,那么路径就是C:\Windows。按照以前个人OpenCV的存放环境,这些dll存放在D:\Program Files\opencv\build\x86\vc10\bin目录下。
到这个目录下,【Alt+A】全选,【Alt+C】拷贝,而后转到C:\Windows下面,【Alt+V】复制,简单粗暴地就完成了。
恩,环境配置大功告成,咱们来测试一下成果吧~
7.最终的测试
就用载入并显示一张图片到窗口的程序,用于咱们的配置测试新建一个空项目的控制台应用程序,新建一个cpp文件,而后粘贴以下代码:
为了你们的考虑,仍是把工程文件发一下吧,虽然此次只有简单的几句代码:
【OpenCV+VS2010开发环境配置 测试用例 by浅墨】下载
呼,生活不多是一路顺风的,咱们的配置过程也是。浅墨在几回的配置过程当中,出现了以下的几种典型问题,我相信你可能会出现,就在这里集中列举一下吧,但愿能为你们解惑:
出现这个问题是由于include的时候粗枝大叶了。
若是你的版本是2.4.6。在这个版本下,opencv根文件夹下面就有个include,但咱们配置的时候若是包含的是他就坑爹了。
正确的应该填build里面的那个include。
这个问题其实上面有过解释了,无论你是32位仍是64位操做系统,只用管你用win32编译器仍是X64 编译器。
其实配置选择什么跟64位仍是32位系统没有直接的关系,而是在于你在编译你的程序的时候是使用那个编译器。
编译器是win32,就用x86
编译器是X64,就用X64。不过通常状况下,都是用的win32的X86编译器。因此,
不管32仍是 64位操做系统,配置文件最好都选择x86版的。
出现这个问题,把静态库不包含就好了。
Lib包含的问题。也许你同时包含了X86和X64的,或者包含出错错了。
5.明明图片路径是对的,却载入不进去图片,提示指针越界,有未经处理的异常
相似错误如图: