OpenCV2.3.1+VS2010+win7+64位数字图像的处理——环境的配置
此文谨献给和我一样什么都不会,想在网上找一个可以傻瓜式安装教程的人,大佬们若是看到了,希望可以批评指正,跪谢!
说明:以下所有的路径,我为了使大家看得更清楚一点,就把opencv的安装路径,统一成 E:\opencv,大家可以自行改到自己装OpenCV2.3.1的地方,所以文中截图部分如果你发现与我上边写的路径不一致,那么,你只需要从opencv(把opencv的路径改为你的OpenCV2.3.1安装的路径)之后开始即可:
例如:
上边这个你的路径就是: 装OpenCV2.3.1的地方\include即可
目录
1.下载OpenCV-2.3.1-win-superpack
2.程序运行时,出现了:fatal error LINK1123:转换到COFF期间失败:文件无效或者损坏“的问题:
一、安装OpenCV2.3.1+VS2010:
1.下载OpenCV-2.3.1-win-superpack
(链接:https://pan.baidu.com/s/1YZoe4u6NHUCw2JworjpQJQ 提取码:c2fr )。
下载压缩包解压之后就傻瓜式安装
先配置环境变量
设置方法为:右击计算机打开属性->高级系统设置,高级选项卡->环境变量
变量:Path值:E:\opencv\build\x86\vc10\bin;(注意 ①64位还是选ia32,按32位的配置 ②记得加封号“;”)
这一步完成后,注销或重启后,环境变量才有用。
2.下载VS2010:
(链接:https://pan.baidu.com/s/1H7FOhqaaVHzlnFa-hrVS0w 提取码:x41f )
(1)创建新项目(VC++ 32位控制台程序)
、
位置按自己想要放的地方放好就可以了
点击确定会出现一个添加项目,不要直接点完成,而是应该点击下一步,将其选择为空项目
否则,就会变成这样,很不顺手(图左),而选择空项目则会变成我们平时编程习惯的样子(图右,对!我是菜鸟)
(而选择空项目,这就是为什么我们之后在的 项目-->属性-->配置属性里看不到C/C++这一栏的原因,不选择空项目则会出现)
(至少到目前为止,我们不需要理会他,仍旧建空项目,因为我们要进行配置的是VC++目录)
3.VS2010配置OpenCV2.3.1:
对于刚刚新建的应用的程序,要对其进行库连接(只这么个说法么?)
(1)对项目进行属性配置:
1.活动(debug),(这个选择的地方在上图最右这里)
(a)Include Directories(包含目录):
添加:(注意:你要是丢掉了build,直接到了include下,那么,你讲看到你的代码里using namespace cv将无法识别)
E:\opencv\build\include\opencv
E:\opencv\build\include\opencv2
E:\opencv\build\include
(b)Library Directories(库目录):
E:\opencv\build\x86\vc10\lib
2.进行单个项目配置:
项目-->属性-->链接器-->输入
(a)Debug:
附加依赖项:
opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib
(b)Release:
附加依赖项: (与配置Debug的lib区别是,文件名之后都有一个d)
opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib
注销电脑,使得配置生效
以下,是一个可以调用摄像头的代码,可以使用他来对你是否配置成功进行测试:
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;
int main(int, char**){
VideoCapture cap(0);
// open the default camera
if(!cap.isOpened())
// check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame;
// get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
二、关于数字图像处理 程序的问题:
1.编译程序时,提示丢失tbb_debug.dll文件
编译程序,可能会出现提示错误:“无法启动此程序,因为计算机中丢失tbb_debug.dll.尝试重新安装该程序以解决问题。”
解决方法:到D\opencv\build\common\tbb\ia32\vc10找到tbb.dll,复制一份,然后重命名为tbb_debug.dl,将tbb_debug.dll拷贝到D:\opencv2.3.1\build\x86\vc10\bin目录下。
重新编译,出现上述结果,说明配置成功
2.cvcam.h及函数:cvcam****等无法识别问题
因为我们老师给了我们一些关于数字图像处理的参考代码,然后我的生活就不太平静了(折腾了一下午,我是个什么都不会的菜鸡啊):
代码部分包括了在OpenCV1.0开始就已经不再使用的头文件 ——cvcam.h(它被归到了highgui.h这个文件里了),这个犯错,以至于我之后对于这个库里函数的调用都成为了泡沫,于是我的作妖就开始了:我在网上找到了关于之前版本的cvcam.h文件,以及与其相配套的cvcam.lib以及cvcam100.dll动态链接库,分别将其放入了:
(a)cvcam.h——————D:\opencv\build\include\opencv 以及 D:\opencv\include\opencv
(b)cvcam.lib——————D:\opencv\build\x86\vc10\lib
(b)cvcam100.dll——————D:\opencv\build\x86\vc10\bin 以及 C:\windows\System32
然后这个cvcam100.dll居然调用了highgui100.dll(2.3.1虽也有highgui.h与其版本不符),然后我这只菜鸡把之后调用的动态库都弄出来以后,他提醒我:
proxytrans.ax could not be loaded。Please register it using
然后我查了网上说我环境变量或者相关的动态链接库.dll文件的路径是否正确,然后问了一圈也没有得到解决,我居然还不知天高地厚的想下个辅助软件打开.dll进行反编译,呵呵哒,我真把自己当回事。
三、非常感谢
参考了以下几位博主,谢谢各位大佬的分享对我的帮助:
https://blog.****.net/zackzhaoyang/article/details/6883996
https://www.cnblogs.com/xingma0910/p/4121806.html(简直全面到哭泣,想给大佬点烟)
四、关于VS2010程序运行会遇到的几个问题
1.在VS2010中如何打开项目、解决方案
请看这个:
(1)打开解决方案:打开-->项目/解决方案-->打开后缀为:sln的文件即可,如图:
(2)打开该解决方案下的项目:右击该解决方案-->添加-->现有项,然后打开后缀为:vcxproj的选项即可,如图:
2.程序运行时,出现了:fatal error LINK1123:转换到COFF期间失败:文件无效或者损坏“的问题:
1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
网络上有好多种解决方法,我这里说一种:这个需要每次项目的时候都进行改动(因为我比较懒,怕时间久了就忘记了,所以每次告诉自己手动改一下),如果你觉得麻烦,可以自行百度,如果有更好的方法,希望大佬们不吝赐教:
将其清单工具-->输入输出-->嵌入清单:是改为否
3.查看输出结果,但提示命令符老一闪而过
初级的问题(我之前没用过VS2010)
VS2010写程序时,经常遇到:想查看输出结果,但是提示命令符却老是一闪而过
根本原因:程序输出的地方是系统而不是vs2010。
https://www.cnblogs.com/chenhongyu/p/3989104.html(有好多种方法,谢谢大佬写这么详细)
祝好运!