前言:本文章的适用人群是计算机视觉的初学者,尤其是在校做项目或者做小东西需要了解并入门计算机视觉的大学生or研究生们。如果是一开始就准备系统学习计算机视觉的人,我个人觉得直接看OpenCV就不错。
本文想法的来源可以追溯到二零一九年的十月份,我还是个对于计算机视觉完全不了解的小白,因为暑假自己做了一个简陋的机械臂,想在之后给机械臂增加自动抓取的功能,于是在查了查相关的资料之后大概筛选出了这么三个适合学习计算机视觉的东西:OpenCV,OpenMV,TensorFlow。但是苦于b站上当时并没有查到太多TensorFlow的相关视频,百度也没有太多很适合的结果(大概率是没好好查 ),所以最后就开始在前两者之间做选择。在间断查阅了大概三四天之后,我终于分清这两个是什么了。现在,尽管我仍是个小白,但是分清二者还是能够做到的,所以写这么一篇文章,希望能够帮助一些想要了解、入门的同学。
以下简述了机器视觉和这两种平台,想直接看结论的请移步倒数四段。
在讨论二者的差异之前,我们先来聊下计算机视觉(Computer Vision,简称CV),就我及其浅薄的见识来说,我见到的大部分计算机视觉都用来进行一些物品的识别(例如最常见的人脸)、判断物体的状态(例如通过颜色判断果实成熟度)、特征拟合的检测(例如拟合直线、圆)、物体定位等等。通过使用计算机视觉,能够很大程度的提高某项工作的工作效率,并减少人工的投入。
接下来我们来说下OpenCV和MV都是什么,包括我自己在内,很多人在刚开始了解这个的时候并没有对二者有着明确的分界,常常会在mv的群里见到“这个东西用opencv的摄像头处理好还是openmv的摄像头处理好?”这类的问题,这都是由于没有分清二者而闹的一些笑话。
OpenCV,全名Open Source Computer Vision Library,即“开源计算机视觉库”,相信有编程基础的同学都或多或少的对库有概念,库是别人所编好的一系列打包好的代码,并提供了使用的函数,我们在编写自己代码时,可以通过引入别人的库来使用别人编好的函数,相信使用Python的各位更是深有感触。顾名思义,OpenCV只是一个”库“,它并不包含任何硬件,大家可以直接去OpenCV的官网上进行下载,这个是OpenCV的官网,可能有点卡,等待下就好了,截止我写这篇文章时,官网已经Release到了4.3的版本,但是网上主要流传的版本以及常见的书籍都是3的版本,所以我采用的是3,大家可以根据自己的实际情况进行选择。
还需要提一点的是,尽管我之前一直用的C++进行OpenCV的编写,但是希望大家有能力的一定要使用Python的环境,因为计算机视觉脱离不了人工智能的联系,别问为什么学了Python还不知道人工智能在哪,请继续学下去,尤其是第三方库。
OpenMV中的MV在外文官网给出的全称是Machine Vision。OpenMV模块的目标是成为图像处理界的arduino(单片机的一种,很适合小白入门),是一款自带了摄像头的基于stm32的模块,截止写稿时,最新版本为OpenMV4 H7,使用Python环境,mirco python进行编写,书写方式和Python几乎相同。
现在国内MV的代理商是星瞳科技,官网内给出了相当详尽的学习资料以及配套IDE的下载方式,我当时学习的时候是通过加入了星瞳科技的qq群进行的学习,群内的资料已经够完全上手了。如果要学习,我建议通过连上模块后一个一个跑例程,这是最有效、最直观的方法。
介绍完了二者,让我们来进行一个简单的总结。OpenCV是一个开源视觉库,不包括硬件;而OpenMV则是一个硬件和软件搭配的摄像头小型模块。
回到标题,为什么我当时会在二者间最选择?(虽然最后是我全都要 )因为OpenMV里内置的各种例程非常详尽,哪怕是自己用Ctrl+C,Ctrl+V将各种不同的代码拼接到一起都可以进行一个比较中低端的机器视觉的操作。它最大的优势是只要有一点编程基础,上手非常容易,就我而言,它的确达到了自己“图像处理界的arduino”的目标。但是,它的优点也成了自己的缺点,它虽然自带了摄像头模块,但是像素低的可怕(我的3代像素只有30w),也就是说,仅仅能够进行短距离,低精度的机器视觉,不适合大型项目。但是我想大部分要使用这个都是为了参加一些比赛让小车跑个赛道什么的,比如某赛啊一类的,那是完全够的。而且它自带了和一些单片机通讯的接口,很适合直接拿来做嵌入式。
当然了,如果是为了教学或者为之后系统学习机器学习打基础,先使用MV也不错。前面也提到了,MV的优点是迅速、直观,里面的例程包括了非常多的机器视觉算法,对于完全不了解机器视觉的小白很友好。
我自己的情况是花了三个月的时间去断断续续的了解和使用MV,但是当自己把自己能想开的东西在上面实现完之后,我发现它对于我的帮助也到了尽头了,所以在之后,我开始学习OpenCV了,有了MV的一些基础,CV上手的相对也就没那么困难,我的个人建议是不赶时间的话就直接使用CV进行学习,毕竟这个还是要强大的多。
第一篇技术分享到此就结束了,如果能够帮助到迷茫的你那就在好不过了,因为之前没有写过这类的文章,文笔不好,希望大家能够海涵,也恳请大佬的批评指正。所有学习CV的初学者都无法跳过一个重要的步骤:配置环境。所以,在下一篇文章之中,我会讲下如何对win10+visual studio2017进行OpenCV 3.4的环境配置,至于多久能写开那就不清楚了 。