OpenCV简介(文末附学习资料)
Posted 圈圈蚁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV简介(文末附学习资料)相关的知识,希望对你有一定的参考价值。
OpenCV简介
一、 Opencv是什么
Opencv的全称是Open Source Computer Vision Library,也就是计算机视觉开源库。这里说到,Opencv就是一个库(它是基于C++语言的,当然也可在其他平台使用,如Java,Python),这个库是用在计算机视觉领域的,同时是开源的,也就是我们可以获得它的源代码,并且可以按我们自己的需求进行修改。
计算机视觉包括底层的图像处理、中层的图像分析以及高层的视觉技术,由于有很多计算机视觉大牛的开发维护,Opencv已经延伸到计算机视觉的每个领域,其功能几乎涵盖每个研究方向。而且,其实现的算法紧跟视觉前沿,将最新的技术算法也纳入其中。
Opencv功能十分强大,它在学术界和工业界的影响也越来越大。作为数值计算的经典——Matlab,同样是科研工作者在图像领域使用最多的工具之一。以前很多论文作者都是提供Matlab代码,由于Opencv特别是Opencv2.x的出现,大大方便了研究者在图像领域的C++编程,所以现在很多研究者都直接给出论文实现的C++代码了。Opencv(C++)之于Matlab的优势在于:在大多数情况,C++具有不错的效率。同时,用C++编程对研究者进入市场找工作有巨大的优势(相对Matlab)。在许多图像相关公司,它的要求也是希望求职者熟悉甚至精通Opencv。所以Opencv在图像界确实是相当重要的一个工具,是很多图像领域人极力推荐的。
二、 Opencv的几个模块简介
Opencv内部是通过模块来组成的,每个模块都能完成相应的功能。这里对Opencv内部的几个主要模块进行简单介绍。打开Opencv官方手册,我们可以看到它包括如下主要模块:
1. core. The Core Functionality。这个模块是Opencv里面的基本数据结构,其中有Opencv的基石Mat,用来存储图像或者矩阵,还有其他诸如Point(点结构)、Size(Mat的长宽结构)等等。Opencv中的Mat封装了很多矩阵运算的方法,这使得我有时不由得觉得它是个类似Matlab的数值计算工具。完全可以利用Mat类来进行矩阵计算。
2. imgproc. Image Processing。这个模块是进行图像处理的,包括有滤波、直方图、特征检测等等。由于这些是图像处理的基础领域,Opencv对于这些算法的实现挺靠谱的。
3. highgui. High-level GUI and Media I/O。简单的Opencv界面,用来读取、输出数据,创建窗口等等。
4. video. Video Analysis。视频分析模块,包括运动分析和物体跟踪。
5. calib3d. Camera Calibration and 3D Reconstruction。相机矫正和三维重建模块。
6. ml. Machine Learning。Opencv中的机器学习模块,其中有统计学习模型、boosting、随机森林等等许多机器学习的算法。
7. contrib. Contributed/Experimental Stuff。这是个实验模块,其中的功能不一定稳定,但是比较前沿。其中有立体视觉、人脸识别等等。
这里主要罗列了其中的七个模块,由于本人并未对Opencv的每个模块都有过深入了解,所以对每个模块都没有进行展开讲。后期会对主要的模块进行学习,并与大家分享。剩下的模块还有nonfree. Non-free functionality、stitching. Images stitching、flann. Clustering and Search in Multi-Dimensional Spaces等等一些,大家可以自己查看Opencv的官方手册,后面也会出现在共享我的资料中。
三、 Opencv的使用
当Opencv进入2.x时代,它的使用已经很简单,很多函数都类似matlab,如imread,imwrite等等。2.x的封装性非常好,而且我们想要的功能,Opencv基本都有提供。我们直接把它作为API调用,使用起来何其方便。而且Opencv2.x让编程者摆脱了内存管理这个坑,我们可以把精力完全放在算法实现上。
当然,作为Opencv的每一个模块,特别是那些非基层模块,它都是计算机视觉领域的一个研究方向,现有的Opencv功能不一定能满足我们的需求。个人对Opencv使用的一些想法是:利用Opencv的基础数据结构,如Mat,进行数据的读写等,Opencv可以读写jpg,bmp,ppm等等几乎所有常见的图像格式。我们实现功能或算法的关键部分可能调用Opencv的函数并不能满足效果,但我们可以用它的其他功能进行辅助。比如,滤波,直方图等等这些经典的图像处理,省得我们自己去写这些函数。
OpenCV教学视频
链接:https://pan.baidu.com/s/1qZ4hmXm
密码:y41s
Learning OpenCV(英文版)
链接:https://pan.baidu.com/s/1o9e2QTG
密码:1gfm
学习OpenCV(中文版)
链接:https://pan.baidu.com/s/1c3mUJIS
密码:kqio
大家看完,感觉还不错,也帮圈圈小蚁推荐给更多的朋友吧!
以上是关于OpenCV简介(文末附学习资料)的主要内容,如果未能解决你的问题,请参考以下文章
2022年,我们为什么要学习C++?(文末附完整C++后端学习路线)
STM32自平衡机器人项目,文末附代码电路图等资料(结尾有学习资料与学习群)