OpenCV简介
谈起入门,我们首先要搞明白OpenCV是什么?OpenCV的全称是Open Source Computer Vision Library,是一种计算机视觉库,主要用于处理摄像头采集的图像。既然说到了是一种库,就要聊聊这个库使用什么语言编写的。OpenCV2.x以前使用的是C语言编写的,3.x后使用的是C++编写的,之所以采用C/C++编写,是因为图像处理很耗费计算机资源,需要执行效率高的语言来提高速度。虽然使用的是C/C++编写,但是提供主流编程语言的API接口,比如,Python、Java、C#、MATLAB等。同时也支持主流的系统平台。
OpenCV入门要求
基于上文OpenCV简介,我们了解到了其使用了C/C++编程语言,实现了计算机视觉方面的算法库。那么要入门,首先要掌握一种高级语言,最好是C/C++,其他编程语言Python,Java也可以,但不是最好的。其次,也是最重要的,要懂数字图像处理方面的知识。语言只是一种表达方式,而算法才是核心,也就是为什么数字图像处理知识很重要。
C/C++号称是最难学的编程语言,和Python比起来其并不友好。本人是C/C++从业者,同时使用Python、MATLAB两种脚本语言。在这些语言中也用过OpenCV,个人的感触是,只要不是深入源码去研究OpenCV,其实使用Python是同样可以用好的。对于编程语言的选择,个人建议在C/C++和Python中选一种,如果你的工作追求代码执行效率,那么我建议使用C/C++,反之,我建议选择Python,毕竟在这波人工智能潮中,它成了一个一把利器。这个主要根据自己工作的需要来选择。
数字图像处理知识,这个是绕不过去的,必须得学习,要不然很难将OpenCV这个库用好。做这样一个比喻,OpenCV就是炒锅,数字图像处理知识就是菜谱。没有菜谱只有炒锅是做不出好菜的,菜谱经常变,炒锅就一个。也就是为什么OpenCV本身不是学习的难点,难点在于掌握数字图像处理知识。
OpenCV学习相关资料
OpenCV官网地址:
https://opencv.org/opencv.org在官网上,有OpenCV使用手册,英文版的,这是第一手资料,市面上很多书都是参考这个手册写的,如果英语好,建议直接使用手册。不必从头到尾看,了解一个概况后,需要什么直接搜索,确定类或函数的功能和接口即可。这是最新的手册网址:
OpenCV Tutorialsdocs.opencv.org书籍推荐,因为我使用的是OpenCV3.3版本,所以本人一直使用《学习OpenCV3》这本书,把它当做工具书使用,经常用于查找相关功能的介绍和类的使用说明,毕竟更擅长中文嘛。这本书是基于C/C++写的,对于使用其他语言的小伙伴,可能不太友好。
《学习OpenCV 3(中文版)》([美]安德里安·凯勒,[美]加里·布拉德斯)【摘要 书评 试读】- 京东图书item.jd.com对于图像处理方面,本人强烈推荐《数字图像处理 第三版》,最好从头到尾,好好读读,比你写多少代码都管用。只有掌握了数字图像处理的知识,你才能将OpenCV用好,才能发挥其最大的作用。
《数字图像处理(第三版)》([美]Rafael,C.,Gonzalez(拉斐尔,C.,冈萨雷斯),Richard,E.,Woods(理查德,E.,伍兹))【摘要 书评 试读】- 京东图书item.jd.comOpenCV学习视频,只是挑挑捡捡的看的。对于小白,还是有一定价值的。可以在我的某盘上下载,链接:
https://pan.baidu.com/s/1C818mZPceQDD8eCk1v7FKwpan.baidu.com提取码: ndff
学习心路分享
我是一名C/C++从业者,后来由于工作需要,开始学习图像处理方面的知识,所以编程语言这一关对我来说没有任何障碍。但是数字图像处理知识这一块,成了自己的短板。我的学习过程是首先将OpenCV大致的过了一下,包括其组成、基本的数据结构、类和函数的接口特点等。然后又大致的过了一下《数字图像处理》这本书和相关的学习视频,搞明白了什么问题使用什么样的图像处理手段,这一点很重要,要不然在工程中,你会不知所措。就这样一边学习一边做项目一边积累,渐渐的开始入门掌握了OpenCV的部分库还有相关的图像处理知识。这个过程纯粹是需要什么学什么,经常泡CSDN,不断总结。学习过程一定要实践,这非常重要,一样东西只有用才能学会。