作者:丹丹2502912601 | 来源:互联网 | 2023-07-14 18:53
邮箱已经收到了VisualStudio2013的升级通知,但是很多软件如OpenCV、Qt等都只有VS2012的预编译库,还是懒得升级了(除非VS支持C++11了)。网上搜了一
邮箱已经收到了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文件夹下的以下文件:
src="https://img8.php1.cn/3cdc5/158d6/a6e/5c90a756e4314dad.jpeg">
如果是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(记住要用>半角分号隔开),Courier New"; font-size: 13px; background-color: rgb(245, 245, 245);‘>%OPENCV_DIR%\bin
在这里可以使用绝对路径。
如下图所示。使用%OPENCV_DIR%变量的好处是万一下次要变动OpenCV(比如安装了两个版本的OpenCV或者改变了路径),只需要修改%OPENCV_DIR%这个变量即可。
Visual
Studio的配置
以Visual
Studio 2012和官方指南的Local
Method(本地方法)为例,修改某一个工程的属性,添加依赖。(VS2012的项目下的VC++目录功能被否决,无法再用全局方法修改了)
右键单击项目->属性,把弹出窗口左上角的配置更改为“所有配置”,选择配置属性->VC++目录,更改右边的包含目录,编辑,新加一行:
id="highlighter_861857" plain?="">
border="0" cellSpacing="0" cellPadding="0">
1 |
$(OPENCV_DIR)\..\..\include
|
类似地,更改库目录,新加一行:
id="highlighter_966850" plain?="">
border="0" cellSpacing="0" cellPadding="0">
1 |
|
如下图所示。,这里可添加绝对路径,直接在依赖文件路径和包含库路径中添加即可
在使用opencv时,需要添加调用的库文件和include文件,库文件路径就添加到Library
Directory,头文件就添加到Include Directory,在将编译好的.lib文件添加到新建工程中时还需要在
src="https://img8.php1.cn/3cdc5/158d6/a6e/af69807dcd21c1d2.jpeg">
在Configuration Properities -->Linker --> Input -->Additional
Dependencies中添加工程中用到的.lib文件的名称
现在修改Debug配置的属性表,在链接器->输入下,修改附加依赖项。这里应该包含所有你需要的OpenCV模块,模块的名称规则是opencv_d.lib,全部模块如下(OpenCV
2.4.7):
id="highlighter_327244" plain?="">
border="0" cellSpacing="0" cellPadding="0">
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),完整的模块列表如下:
id="highlighter_327424" plain?="">
border="0" cellSpacing="0" cellPadding="0">
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
#include
>using namespace std;
>using namespace cv;
>int main(int argc, >char **argv)
{
>if(argc<2)
{
cout<<>">No parameters.\n"
<<>">You need to specify an image.>"< exit(>1);
}
>else
{
Mat img = imread(argv[>1]);
>if (img.empty())
{
fprintf(stderr, >">Error: load image failed.>");
>return -1;
}
namedWindow(>">image>", CV_WINDOW_AUTOSIZE);
imshow(>">image>", img);
waitKey();
}
>return 0;
}
编译完成后,需要在命令行下运行,图片的路径作为参数传递给程序。看看能否顺利编译成功,并看到图片吧。
参考文章: Installation in Windows | How to build applications with OpenCV inside the Microsoft
Visual Studio
VISUAL STUDIO 2012下的OPENCV 2.4.7安装过程,布布扣,bubuko.com