OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 33420|回复: 43

如何开始学习OpenCV?

[复制链接]
发表于 2012-12-19 09:49:57 | 显示全部楼层 |阅读模式
本帖最后由 frank818 于 2013-10-14 10:49 编辑

OpenCV是什么,相信搞机器视觉的朋友都清楚。但是很多搞机器视觉的朋友却是对他又爱又恨。爱它因为它是免费的,如果能够好好掌握它,并运用到自己的机器视觉项目中,还是可以一定程度上降低项目成本。恨它是因为它不太好学习。原因有以下几个:
1、国内有关OpenCV的中文著作太少了,就2本,而且还是1.1版本的,已经和现在最新版本2.4.3差别太大,就算是学习了,过渡到最新版也要花一定的时间和精力。
2、直接学习较高版本,可是没有相应的教程可以参考。直接看英文版本的帮助文档吧,对于英文不好的朋友,难度很大。
3、就算是英文可以的朋友,该如何高效的学习OpenCV,估计有些人也没有一个良好的方法,导致学习效果不好。
   为了帮助那些想学OpenCV却又不得法的朋友,本人姑且把自己自学OpenCV的一点点经验拿出来分享一下,希望能够帮到有需要的朋友。已经掌握了良好学习方法并且已经一定程度掌握OpenCV的朋友,还希望不要吐槽。
1、先去下载最新版OpenCV,网址如下:http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.4.3/OpenCV-2.4.3.exe。下载完成后解压到相应目录。本人解压到D:\Program Files\OpenCV2.4.3。
2、有的文章提到使用CMake把OpenCV下面的范例生成为Visual Studio的工程,此处我没有这样做。直接使用范例。这里先把OpenCV目录下面的几个重要目录做个说明(见附件):
doc目录:主要包含OpenCV的帮助文档。其中opencv2refman.pdf主要是OpenCV的各种类和函数的使用说明。opencv_tutorials.pdf,主要是下面教学代码目录里面各个教学范例的简单讲解。opencv_cheatsheet.pdf主要是最常用OpenCV类和函数的集合。此3个PDF文档对自学者帮助最大。
samples\cpp\tutorial_code目录:里面包含基本教学代码。和上面的opencv_tutorials.pdf文档遥相呼应,构成一个完整的自学体系。
build目录:包含编译,调试,发布所需要的各类动态库,静态库,头文件等。
因为OpenCV2.4.3好像只支持Visual Studio 2008以上版本,我在这里以Visual Studio 2008为例讲解如何让范例跑起来。
1、添加环境变量:见图片。此处我在path环境变量中添加如下目录:D:\Program Files\OpenCV2.4.3\build\x86\vc9\bin。记住在前面一个目录后面加分号。
2、在Visual Studio中包含头文件目录:见附件中的图片,已经用红色矩形框标识如何操作。
3、在Visual Studio中包含库文件目录:见附件中的图片,已经用红色矩形框标识如何操作。
4、建立一个新建Visual Studio VC win32控制台应用工程,这里我选择带预编译头的工程,省去添加cpp文件的工作。
5、代码创建:这里我选择samples\cpp\tutorial_code\ImgProc\Morphology_2.cpp文件。先添加包含目录,如下(以后所有范例均可以如下添加):
#include <opencv2/opencv.hpp>
#include <stdio.h>
然后复制代码,见附件:
6、编译文件:自然少不了要包含静态库,要添加的库(debug版和release差别就是文件名后多了一个d标识是debug版)如下:
debug版
opencv_calib3d243d.lib
opencv_contrib243d.lib
opencv_core243d.lib
opencv_features2d243d.lib
opencv_flann243d.lib
opencv_gpu243d.lib
opencv_haartraining_engined.lib
opencv_highgui243d.lib
opencv_imgproc243d.lib
opencv_legacy243d.lib
opencv_ml243d.lib
opencv_nonfree243d.lib
opencv_objdetect243d.lib
opencv_photo243d.lib
opencv_stitching243d.lib
opencv_ts243d.lib
opencv_video243d.lib
opencv_videostab243d.lib

release版
opencv_calib3d243.lib
opencv_contrib243.lib
opencv_core243.lib
opencv_features2d243.lib
opencv_flann243.lib
opencv_gpu243.lib
opencv_haartraining_engine.lib
opencv_highgui243.lib
opencv_imgproc243.lib
opencv_legacy243.lib
opencv_ml243.lib
opencv_nonfree243.lib
opencv_objdetect243.lib
opencv_photo243.lib
opencv_stitching243.lib
opencv_ts243.lib
opencv_video243.lib
opencv_videostab243.lib
添加方法见附件。
7、字符集设置:如果编译过程中出现如下错误:
不能将参数 1 从“_TCHAR *”转换为“const std::string &”原因如下: 无法从“_TCHAR *”转换为“const std::string”。请字符集设置为“使用多字节字符集”,设置方法见附件。
8、最后指定命令后参数:方法见附件。这样就可以不用在windows命令行下输入参数了,方便调试,但是要注意,图片必须放在你所建立的工程目录下(和.cpp以及.h文件同一目录)。否则就要加上相应的路径。如果参数多于1个,请以空格分开。
9、支持所有参数设置完成,开始编译运行吧。

如果Visual Studio无问题的话,按照以上按部就班操作,每个范例均可以正常运行。
学习OpenCV 2.4.3,不要先急着敲代码,应该要先把它的代码运行一遍,看看是什么结果。先知道运行结果,再逆向推导编程思路,最后看代码,分析代码,把每一个OpenCV类和函数的功能作用搞清楚,形成自己的思路,最后抛开原来的代码,按照自己的思路,把代码敲进去,这样才能实现消化吸收。
当然每个人的学习方法未必相同,或许别人有自己的独特的学习OpenCV的更好方法。如果是这样的话,不妨拿出来分享一下。
最后,要学好OpenCV并利用OpenCV做机器视觉项目,仅靠OpenCV提供的API是不够,还需要补充一定的数字图像处理的基础知识,不求自己写处理算法,但是每个OpenCV处理算子的功能,应用范围,是要清楚的,只有这样,才在具体的应用中知道该使用什么样的API。
以上就是我目前自学OpenCV 2.4.3的一点点心得,拿出来和大家分享一下。如果是OpenCV高手,还烦请口下留情,少吐槽,多指点。如果能够帮助到新手,我甚感欣慰。

OpenCV 2.4.3初学参考文档.pdf

789.49 KB, 下载次数: 96535

回复

使用道具 举报

 楼主| 发表于 2012-12-20 10:14:58 | 显示全部楼层

如何开始学习OpenCV?

多谢夸奖。第一次在OpenCV网站上发这种帖子。其实关注OpenCV很久了,只是最近才能够有时间研究如何学习。我也只是把自己自学OpenCV的一点点心得拿出来和大家分享。其实里面的示例都只是教学示例,只是讲了最基础的用法。没有实际案例参考。你说的对,仅靠教学示例是不够的,还得有实际项目案例的应用范例才行。可是国内没有,都是国外的书,读起来估计会吓退很多人。
回复 支持 反对

使用道具 举报

发表于 2012-12-23 22:40:15 | 显示全部楼层

如何开始学习OpenCV?

你写的很好,按照你的方法搞好了。你提出学习openCV的方法也很真诚,不错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-24 21:49:51 | 显示全部楼层

如何开始学习OpenCV?

你写的很好,按照你的方法搞好了。你提出学习openCV的方法也很真诚,不错。
能够帮到你真是太好了。
回复 支持 反对

使用道具 举报

发表于 2013-1-1 20:32:17 | 显示全部楼层

如何开始学习OpenCV?

难道每次新建一个工程,都要重新配置吗????????????????????????????????、
回复 支持 反对

使用道具 举报

发表于 2013-1-2 21:33:20 | 显示全部楼层

如何开始学习OpenCV?

[quote=&quot;maxxiang&quot;:3jp1pb52]你写的很好,按照你的方法搞好了。你提出学习openCV的方法也很真诚,不错。
能够帮到你真是太好了。[/quote:3jp1pb52]
那个文档里貌似好多错误,不是拼写就是顺序。。。。好坑爹
回复 支持 反对

使用道具 举报

发表于 2013-1-17 00:26:25 | 显示全部楼层

如何开始学习OpenCV?

恩,的确说得对,谢谢你的分享,我也是刚入手开始自学opencv的初学者,真希望一起学下去。。。晚安。
回复 支持 反对

使用道具 举报

发表于 2013-1-17 14:18:08 | 显示全部楼层

如何开始学习OpenCV?

很不错,希望能按这个思路学习下去。

新手一个,打算结合算法一起学习,希望能有一个突破
回复 支持 反对

使用道具 举报

发表于 2013-8-3 15:25:54 | 显示全部楼层

如何开始学习OpenCV?

学习中,谢谢楼主分享。
回复 支持 反对

使用道具 举报

发表于 2013-9-1 20:00:14 | 显示全部楼层
赞一个~楼主讲得方法跟我经历差不多,开始接触OpenCv一个多月了,觉得楼主讲得很实在,也很真诚,必须支持!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-4 05:55 , Processed in 0.010803 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表