[前奏篇] Win7+opencv2.4.9+Visual Studio2010之环境配置
前言
opencv2.4.9+Visual Studio2010来说网上有很多学习资料,方便快速入手,在安装时主要参照了浅墨_毛星云的opencv系列教程之入门安装,写得非常详细,也就不再累赘了,在此主要做一些补充及自己安装过程中所遇问题的解决,配置过程并不复杂。
1. 下载&安装 opencv SDK & Visual Studio2010
opencv官网:https://opencv.org/,由于在下载时经常下载到中途就卡住,速度也比较慢,在此提供opencv2.4.9百度网盘下载地址:https://pan.baidu.com/s/1jHWev7g 密码:4zk4
关于其他版本OpenCV-V2.4.11、OpenCV-V3.0.0、OpenCV-V3.1.0、OpenCV-V3.2.0、OpenCV-V3.3.0在下面这个博客中有给出:OpenCV 下载驿站(百度云盘下载,同步更新) http://blog.csdn.net/yanzi1225627/article/details/47668021
Visual Studio2010的网盘地址:https://pan.baidu.com/s/1kUNURFx
密码:mp4w
2. 配置环境变量
主要是将opencv下bin文件夹添加到PATH环境变量,以便在各目录下调用opencv中bin目录下的可执行程序都能找到,环境变量比喻性来说有点类似于操作系统中的“全局变量”,当调用某一可执行程序时,操作系统会在当前目录及环境变量所包含目录下寻找该可执行程序,如果都没有会提示可执行程序找不到,就得带上全路径执行了,扯远了…
以安装目录在XXX为例:
对于32位系统,就添加:
”XXX\opencv\build\x86\vc10\bin”(和之前的就有有的环境变量用英文的分号“;”进行分隔)
而对于64位系统,可以两个都添加上:
”XXX\opencv\build\x86\vc10\bin”
和”XXX\opencv\build\x64\vc10\bin”,
这样,到时候才可以在编译器Win32和X64中来回切换都吃得开,游刃有余~
注:变量值实际为bin文件夹的路径;D表示OpenCV安装于D盘;X64表示运行系统环境位64位系统,若安装于32位系统,应为X86;vc10表示编译环境为Microsoft Visual Studio 2010;变量添加完成后最好注销系统,才会生效。
3. 包含(include)目录、工程库(lib)目录、链接库的配置
这些在浅墨的博客中已经不能再详细了,主要是在“属性管理器”工作区中,点击项目->Debug|Win32->Microsoft.Cpp.Win32.userDirectories(反键属性,或者双击)即可打开属性页面。在“属性管理器”设置将来会被继承,具体的设置请参照浅墨博客。
重点再说下关于链接库的配置:
【通用属性】 ->【链接器】->【输入】->【附加的依赖项】
对于【OpenCV2.4.9】,添加如下249版本的lib(这样的lib顺序是:19个带d的debug版的lib写在前面,19个不带d的release版的lib写在后面):
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
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
由于将所有带d的lib放在前面,不带d的lib放在后面,debug版本会优先,在编译时很可能出现debug版本是能运行,但是release版本不能运行的情况。遇到这种情况当需要运行release版本时,只需要在本工程中将不带d的再添加一遍就行。
情景还原及解决(当前debug OK,release不能运行):
在属性管理器中的附加依赖项为带d的lib在前,不带d的lib在后,在前的会优先,debug OK,release运行报某某地址有未经处理的异常(因为字符串读取问题引起的诸如图片载入不了,报指针越界,内存错误等等)
解决:修改当前项目的附加依赖项,在【项目】–>【工程名属性】,我的工程名叫test_opencv,就点击【项目】下test_opencv属性
在【通用属性】 ->【链接器】->【输入】->【附加的依赖项】可以看到继承的值就是前面在属性管理器中设置的内容,带d的lib在前,不带d的lib在后,在此只需要将不带d的lib复制粘贴到上面即可,如图:
这样切换到release下既可以运行通过了
4. 最终测试
在Windows文件夹下加入OpenCV动态链接库这一步只要前面PATH环境变量设置没有问题,电脑也重启后是不需要的,重启是为了使环境变量设置生效,因为环境变量会在开机过程中被读取。
测试代码:
`
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
const char* imagename = "img2.jpg";
Mat img= imread(imagename);
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}
namedWindow("demo");
imshow("demo",img);
waitKey(6000);
return 0;
} `
注意:示例程序中img2.jpg为图片名,需放在*.cpp目录,一般会有两层项目名的文件夹。
Misc:遇到的问题
1.在debug时遇到 Cannot find or open the PDB file
如下:
“TestIfly.exe”: 已加载“E:\workspace\vc\TestIfly\Debug\TestIfly.exe”,已加载符号。
“TestIfly.exe”: 已加载“C:\Windows\SysWOW64\ntdll.dll”,Cannot find or open the PDB file
“TestIfly.exe”: 已加载“C:\Windows\SysWOW64\kernel32.dll”,Cannot find or open the PDB file
“TestIfly.exe”: 已加载“C:\Windows\SysWOW64\KernelBase.dll”,Cannot find or open the PDB file
“TestIfly.exe”: 已加载“C:\InterReco 4.1\bin\isr_api.dll”,Cannot find or open the PDB file
“TestIfly.exe”: 已加载“C:\Windows\SysWOW64\user32.dll”,Cannot find or open the PDB file
“TestIfly.exe”: 已加载“C:\Windows\SysWOW64\gdi32.dll”,Cannot find or open the PDB file
“TestIfly.exe”: 已加载“C:\Windows\SysWOW64\lpk.dll”,Cannot find or open the PDB file
“TestIfly.exe”: 已加载“C:\Windows\SysWOW64\usp10.dll”,Cannot find or open the PDB file
“TestIfly.exe”: 已加载“C:\Windows\SysWOW64\msvcrt.dll”,Cannot find or open the PDB file
解决:
参照:http://topic.csdn.net/u/20101108/14/49f2a594-8da2-4f5e-a01d-dd08b29f961b.html
总结如下:
原因是程序输出的地方是系统而不是vs2010。
Ctrl + F5运行就可以了
或者在cmd命令行下执行程序。
或者
把”Microsoft Symbol Servers”勾上(Tools -> Options -> Debugging -> Symbols). 这种使得编译很慢,可以先勾选上编译运行通过后,再去掉速度就没那么慢了。
上一篇: 默认值_PHP
推荐阅读
-
Windows Server 2016 配置指南 之 PHP7 环境搭建篇
-
Linux学习第二篇之Java环境安装配置图文教程
-
《SpringBoot从入门到放弃》之第(二)篇——配置文件详解、自定义属性、随机数、多环境配置、日志文件配置
-
[前奏篇] Win7+opencv2.4.9+Visual Studio2010之环境配置
-
Windows Server 2016 配置指南 之 FTP环境搭建篇
-
Linux学习第二篇之Java环境安装配置图文教程
-
Windows Server 2012 配置指南 之 PHP环境搭建篇
-
Windows Server 2012 配置指南 之 MySQL环境搭建篇
-
测试前奏 之 Genimotion下adb命令操作的环境配置
-
Windows Server 2016 配置指南 之 FTP环境搭建篇