如想了解如何配置OpenCV3.X,请点我跳转到最新的配置视频。
[视频内容开始][优酷视频放在最后]
优酷视频链接稍后给出,先给出SkyDrive上的视频共享地址https://skydrive.live.com/redir?resid=76E4F6E8AB62619!105,下载这个比较小,并且十分清楚。
背景介绍
概述
OpenCV(Open Source Computer Vision)在BSD开源协议(介绍)下发布,可以研究也可以被商用。它有C++,C,Python和Java的函数接口。支持Windows、Linux、Mac OS、iOS和Android操作系统。OpenCV具有高效的计算效率,专注于实时程序应用设计。在优化过的C/C++语言下,OpenCV可以充分利用多核处理器的性能。在全世界,超过47万人使用,600万次下载。不论是互动艺术、矿山监察、地图拼接或者机器人应用,都可以看到OpenCV的踪影。
配置过程
准备步骤
明确自己的电脑配置
对计算机右键–>选择属性,查看自己电脑的配置。看到“系统类型”,告诉我们电脑是32位(x86)构架的,还是64位(x64)构架的?
确认自己所安装软件开发平台。
即确认IDE(Integrated Development Environment,集成开发环境)是什么版本,是Visual Studio 2010还是VS2012?[什么版本不重要,本教程使用2012做例子,其它版本类似,都可以找到相应的选项]
下载OpenCV
在网站http://opencv.org/右侧,点击OpenCV for Windows下载。
具体配置
解压缩
把OpenCV-2.X.X解压并放到某个目录下,例如 D:\OpenCV 。(我的是在F:\Softs\OpenCV245下面,记住这个地址,下面要用)
配置系统环境变量
对计算机右击–>属性–>高级系统设置–>高级–>环境变量
如果没有这个Path变量,就自己添加一个,我的路径是:
F:\Softs\OpenCV245\opencv\build\x86\vc11\bin
VS2008选择VC9,VS2010选择VC10,VS2012选择VC11
X86还是x64,随意选择
注意,添加完毕后需要注销再重新登入此用户!
创建Win32控制台应用程序或者Win32项目(必须建一个)
点击完成
打开属性页管理器
视图–>属性页管理器–>选下方的“属性管理器”。(VS2010中可以在“其它窗口”中找到)
展开OpenCV_Win32,看到Microsoft.Cpp.Win32.user,对它右键选择属性,选择VC++目录。
配置include和lib路径
include即告诉VC去什么地方寻找OpenCV的头文件。
然后对VC++目录下选项进行添加:
(1)Library Directories(库目录)
F:\Softs\OpenCV245\openv\build\x86\vc11\lib
(2)Include Directories(包含目录)
F:\Softs\OpenCV245\opencv\build\include\opencv
F:\Softs\OpenCV245\opencv\build\include\opencv2
F:\Softs\OpenCV245\opencv\build\include
添加链接库(初学者全部添加,熟悉后根据所需要的模块添加)
opencv_core245d.lib
opencv_imgproc245d.lib
opencv_highgui245d.lib
opencv_ml245d.lib
opencv_video245d.lib
opencv_features2d245d.lib
opencv_calib3d245d.lib
opencv_contrib245d.lib
opencv_legacy245d.lib
opencv_flann245d.lib
opencv_gpu245d.lib
运行一个简单的例子(许多网站都有代码,视频中会有详细演示)
打开lena.tiff,如果成功打开,说明opencv配置成功!
其它注意
我们创建的是Win32程序,不论是32位电脑还是64位电脑,配置方法都一样,都可以使用这种x86配置方法。
配置路径地址有很多方法,比如在MFC中,我们无法唤出“属性页管理器”,可以使用普通方法配置。
Release的配置
和Debug一致,只是lib库名字最后没有那个d英文字符。
高级版本的OpenCV都是支持低级版本的,一般情况下越新的越好。
发布程序时,把dll一并发布,如果是debug程序还需要包含IDE环境的dll,可以百度问下放在电脑哪个文件夹。(有时还缺少提示其它dll文件,最好在没有vs2010和opencv的电脑上测试成功后再发布给别人)[本人暂时不会使用staticlib编译成不需要dll的程序,如果有会的人,欢迎写教程告知]
安装部分结束
如果有任何错误请向我提出,我会将错误在文档中进行更正。(截止2013-9-4没人留言呢)
[视频结束]
额外拓展(有相对应的视频)
进阶
更佳的环境变量OPENCV_DIR
配置环境变量也有很多方法,比如我们可以设置一个名字叫OPENCV_DIR的变量给出OpenCV的build文件夹所在路径。这样在OpenCV版本变换时,我们只需要修改这个环境变量即可。
根据需要添加lib
参见word文档
OpenCV路径个文件夹的作用
bulid文件夹是最重要的,其它文件夹删除不会影响opencv的运行。
特别注意samples下的例子如何运行
全部在项目的属性里配置
不去“属性页管理器”配置,直接在项目的属性页里配置,这样每个OpenCV项目都需要配置一次。
Image Watch插件
OpenCV调试必备,前提:使用VS2012。OpenCV.org上可以下载到。—->演示一下
Visual Assist X
可以在百度云下载。
官方学习文档汇总
或者
http://blog.csdn.net/guoming0000/article/details/8839055
学习网站
英文官网 : http://opencv.org/
中文官网 : http://www.opencv.org.cn
QQ群
Opencv机器视觉图像处理 168464304 116/500人
计算机视觉(一) 130541036 217/500人
图像学技术 77351873 650/1000人
CvChina计算机视觉论坛 133654392 244/500人
参考
http://www.opencv.org.cn/index.php/VC_2010_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.4.3
http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=14545
http://u.youku.com/此人无情 他做了一系列opencv(c语言接口+windows)的视频教程。
附录
官方学习文档
OpenCV2.4.5 2013-4-23更新
OpenCV for Windows
OpenCV for Linux/Mac
OpenCV for Android
OpenCV for iOS
1.离线文档(PDF)
2.在线文档
3.其它OpenCV学习书本
(1)使用OpenCV开发机器视觉项目Mastering OpenCV with Practical Computer Vision Projects
(2)OpenCV 2 Computer Vision Application Programming Cookbook
(3)Learning OpenCV computer vision with the OpenCV library
(4)OpenCV算法实现参考文献(25个pdf)
后话
两年前,我因为本科毕设有幸接触到OpenCV,之后读研仍然进行图像方面的研究。由于OpenCV的运算高效性,许多大学和公司借助它进行算法开发。遇到最多的问题就是配置问题,每年总是有许多人询问。制作此文以及视频,是节省更多的人的时间,尤其是那些已经不厌其烦帮助一个又一个菜鸟成功配置OpenCV的好人们~
视频
OpenCV配置 Win7 Win8 VS2010 VS2012
好厉害,按照你的方法成功了,图片是jpg格式。继续学习中。谢谢
加油~
1.视频中就是使用win8配置的,请认真看
2.都是一样的
多配置几次就会熟练,每个人配置时犯的错误都不同
win8系统配置opencv时有什么要注意的吗?跟win7下有什么不同吗?
1.视频中就是使用win8配置的,请认真看2.都是一样的多配置几次就会熟练,每个人配置时犯的错误都不同
大哥你好,我用的win8系统,vs2013,opencv3.0运行其他程序还好,可是定义的cascadeclassfier的对象后,无法将.mxl文件导入到对象中,我试了2.4.9版本也不行。后来在另一台电脑win7系统下用2.4.9版本成功了。这个问题怎么解决?是配置问题吗?
win8下我没写过分类器的代码,我觉得可能:1.中文路径问题,使用英文路径 2.使用绝对路径 3.使用多字节字符,而不是Unicode,都试试看,如果成功了,告诉我下
大哥,还没成功,不过我换了台win732位电脑就没有问题。您说的第三点使用多字节字符,而不是unicode是什么意思,不太懂。前两点都试过了,还是不行。
是项目属性里面的东西,不行就用win7吧~~不晓得什么原因
难道要用cmake?cmake我不会
不用cmake啦,我也不会,那个还是不要碰啦
我回头试试改属性里的unicode,谢谢
今天又配一台电脑,vs2012配opencv3.0,可是出现link2019无法解析的外部信号crtdbgreport,该符号在函数“void_cdecl std::debug_message(wchart const。。。。。)中被引用”link11201个无法解析的外部命令
配置选项有问题,可能和 MD,MT,MTD这些有联系吧,我也不太懂
我解决了,您说的对,是模式选错了,我选了mt模式,应该选mtd模式。
出現這段ERRO是什麼問題嗎?
error LNK2019: unresolved external symbol __imp_NuiImageStreamReleaseFrame referenced in function main
error LNK2019: unresolved external symbol __imp_NuiImageStreamGetNextFrame referenced in function main
error LNK2019: unresolved external symbol __imp_NuiShutdown referenced in function main
error LNK2019: unresolved external symbol __imp_NuiImageStreamOpen referenced in function main
error LNK2019: unresolved external symbol __imp_NuiInitialize referenced in function main
C:Userslouislai080DocumentsVisual Studio 2010Projectsqwex64Debugqwe.exe : fatal error LNK1120: 5 unresolved externals
你这个是Kinect的路径没有配置好,头文件、lib路径。请百度搜索vs对kinect sdk相关配置方法。
刚才那个问题解决了,现在没有任何报错,出来黑框之后弹出“无法正常启动0xc000007b” 不知道怎么回事
那还是配置错误原因吧。你是不是把x64和x86的库文件之类弄混了呢。你可以把你的项目,以及问题写邮件告诉我 guoming0000@sina.com
谢谢你,已经解决了,是版本的问题,我用的12导入的Opencv 下面v10的东西。现在已经OK了
嗯,以后都要注意~其他SDK也会有这个问题
您好,我按照您的配置,出了一些问题。 我的环境是64位系统,win7, vs2010, opencv2.3.0 运行你视频里面那个打开lean.tiff的示例程序的时候出现了错误,我把错误贴出来,望能解答。
1>PrepareForBuild:
1> 正在创建目录“D:visual studio 2010ProjectsTemp for opencv settingDebug”。
1>InitializeBuildStatus:
1> 正在创建“DebugTemp for opencv setting.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1> stdafx.cpp
1> Temp for opencv setting.cpp
1>d:softwareopencv2.3buildincludeopencv2flannlogger.h(70): warning C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:kinectvssoftwarevcincludestdio.h(234) : 参见“fopen”的声明
1>d:visual studio 2010projectstemp for opencv settingtemp for opencv settingtemp for opencv setting.cpp(10): warning C4129: “s”: 不可识别的字符转义序列
1>d:visual studio 2010projectstemp for opencv settingtemp for opencv settingtemp for opencv setting.cpp(10): warning C4129: “l”: 不可识别的字符转义序列
1>opencv_highgui230d.lib(opencv_highgui230d.dll) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突
你这个是控制台程序,你对于argc和argv理解不够,可以自己搜搜看他们什么意思,该如何执行这个程序。不建议使用这种方式运行程序,把参数改成文件实际地址比较好。
恩,就是按照视频里的方法吧?我试过了,argc和argv我也在网上查过了,但是还是不清楚有什么用。
把他们改成变量和 常量,用实际文件名字代替。实在不会,问一个学c语言比较好的人,语言描述不清楚这个基础问题~
qq就不加了,加了也会删掉的~包涵哈~但任何留言都会回复的
你好!我是opencv的初学者。我看了你写的配置及简单应用资料,我觉得写得非常好,很直接容易操作。谢谢!
我有个简单的问题想请教你:
我在学习2.4.6版本的官方tutorial的1.13Load and Display an Image时,我按照教程在VS2012环境下遍写提供的代码(包括#include“stdafx.h”,主函数int _main(int argc,_TCHAR*argv[]),这个和教程上的不同,不过我觉得应该没影响)之后点击运行。所获得的结果只是显示了一行:Usage : display_image ImageToAndDisplay .这句,没有像教程上运行结果一样。我在网上查了也没找出原因。我也不知道为什么代码里没有出现图片的路径和名称信息,教程代码运行能显示出一张“鱼”的图片。还有我注意到教程的系统好像是Linux。是和这个有关吗?
请您指教!
qq:714200277
请把代码贴出来,我只会windows下的。
不好意思,这几天没网,所以现在才回复。
#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
cout<<"argc = "<<argc<<endl<<argv<<endl;
if(argc != 2)
{
cout << "Usage : display_image ImageToloadAndDispaly"<<endl;
return -1;
}
Mat image;
image = imread(argv [ 1 ],CV_LOAD_IMAGE_COLOR); //Read the file
if(! image.data)
{
cout<<"Could not open or find the image"<<std::endl;
return -1;
}
namedWindow("Display window",CV_WINDOW_AUTOSIZE); //Creat a window for display
imshow("Display window",image); //Show our image inside it
waitKey(0);
return 0;
}
这是源代码,VS2012.
不好意思,这几天没网,所以现在才回复。
#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
cout<<"argc = "<<argc<<endl<<argv<<endl;
if(argc != 2)
{
cout << "Usage : display_image ImageToloadAndDispaly"<<endl;
return -1;
}
Mat image;
image = imread(argv [ 1 ],CV_LOAD_IMAGE_COLOR);//Read the file
if(! image.data)
{
cout<<"Could not open or find the image"<<std::endl;
return -1;
}
namedWindow("Display window",CV_WINDOW_AUTOSIZE);//Creat a window for display
imshow("Display window",image);//Show our image inside it
waitKey(0);
return 0;
}
这是源代码,VS2012.