【图像处理OpenCV(C++版)】——初学OpenCV


前言

欢迎来到本博客

本专栏主要结合OpenCV和C++来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快速查询等,随时更新。

具体食用方式:可以点击本专栏【OpenCV快速查找(更新中)】–>搜索你要查询的算子名称或相关知识点,或者通过这篇博客通俗易懂OpenCV(C++版)详细教程——OpenCV函数快速查找(不断更新中)]查阅你想知道的知识,即可食用。

支持:如果觉得博主的文章还不错或者您用得到的话,可以悄悄关注一下博主哈,如果三连收藏支持就更好啦!这就是给予我最大的支持!


文章目录

    • 学习目标
    • 一、 初识OpenCV
    • 二、 OpenCV模块介绍
    • 三、 总结

学习目标

  • 初识OpenCV,了解OpenCV相关背景知识
  • 了解OpenCV相关模块

一、 初识OpenCV

  OpenCV(全称:Open Source Computer Vision Library)是开源的计算机视觉和机器学习库,提供了C++、C、Python、Java接口,并支持Windows、Linux、Android、Mac OS平台。OpenCV自1999年问世以来,就已经成为计算机视觉领域学者和开发人员的首选工具。
  OpenCV是由Intel的小组进行开发的,在发布了一系列Beta版本后,1.0版本终于在2006年面市,2009年发布了重要的版本OpenCV 2.X,现在已经是2.4.13版本;从2014年开始,在继续更新OpenCV 2.X版本的同时,发布了OpenCV 3.X版本,现在已经更新到4.6版本了(截止2022.11)。

二、 OpenCV模块介绍

  这里以在Windows下OpenCV 2.x版本为例,介绍整个OpenCV开发包的构成。解压缩所下载的OpenCV压缩包主要有两个文件夹,分别为buildsources

【图像处理OpenCV(C++版)】——初学OpenCV_第1张图片

  sources是用来存放源码的,在其子文件夹modules下列出了OpenCV实现的各个模块。
  其中core、highgui和imgproc是最基础的模块,也是学习OpenCV的起点。
  本专栏主要以这三个模块为基础,重点介绍图像处理基础方法的数学原理。对于其他更高层次的方向及应用也会有相关介绍。

具体模块如下:

模块名 注释
core 是OpenCV的核心模块,包含了最基本的结构(矩阵,点线和形状等),以及相关的基础运算/操作。
imgproc 图像处理模块,包括图像相关的基础功能(滤波,梯度,改变大小等)和一些高级功能,即图像分割,直方图,形态分析和边缘/直线提取等。
highgui 提供了用户界面和文件读取的基本函数,比如图像显示窗口的生成和控制,图像/视频文件的IO等,,可认为是一个轻量级的Windows UI 工具。
video 用于视频分析的常用功能,包含读取和写视频流函数。
calib3d 三维重建,立体视觉和相机标定等的相关功能,校准单个/多个/多目摄像头。
features2d 二维特征相关的算法,包含检测、描述或匹配特征点等功能,比如ORB特征。
object 目标检测模块,用来检测人脸、行人或者其他物体,包含级联分类和Latent SVM。
objdetect 目标检测模块,用来检测人脸、行人或者其他物体,包含级联分类和Latent SVM,如经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测。
ml 机器学习算法模块,包含一些视觉中最常用的传统机器学习算法,且能够和OpenCV友好交互。
flann 最近邻算法库,用于在多维空间进行聚类和检索,经常和关键点匹配搭配使用,平时很少直接使用,但在其他模块函数中,会调用到该算法
gpu 包含了一些gpu加速的接口,底层的加速是CUDA实现,前提是需要好的计算资源
photo 计算摄像学(Computational Photography)相关的接口,比较新的模块,包括图像修复和降噪。
stitching 图像拼接模块,也是一个新的模块,不断更新中
nonfree 受到专利保护的一些算法。
contrib 一些实验性质的算法,新的算法,暂未加入OoenCV库中。
legacy 一些被取消的接口,保留是考虑到向下兼容,OpenCV3.0已取消
ocl 利用OpenCL并行加速的一些接口,OpenCV3.0已取消,T-API取代。
superres 超分辨率模块,用的不多。
viz 基础的3D渲染模块,底层就是著名的3D工具包VTK(Visualization Toolkit)。

  build文件夹存放的是通过源码包编译好的文件。它也是以下部署OpenCV用到的主要文件夹,其中:
   doc子文件夹:有两个最重要的学习OpenCV的文档(可能没有哦,但不影响),即:
    opencv2refman.pdf (函数手册,介绍了所有函数的声明及参数解释);
    opencv_tutorials.pdf(函数使用实例);

   include子文件夹:存放的是OpenCV的头文件;
   x64和x86子文件夹:存放的是针对64位和32位Windows系统编译好的.dll和.lib文件;
   python子文件夹:存放的是OpenCV Python API的动态模块;
   java子文件夹:存放的是Java API的JAR包。

  了解了整个开发包的构成后,就可以开始进行学习实操,要注意的是OpenCV不断迭代更新,算子一直在更新,我们先把基本的,也是比较重要的算子学通、学透,其他算子学习起来也不是很困难的。


三、 总结

  最后,长话短说,大家看完就好好动手实践一下,切记不能三分钟热度、三天打鱼,两天晒网。OpenCV是学习图像处理理论知识比较好的一个途径,大家也可以自己尝试写写博客,来记录大家平时学习的进度,可以和网上众多学者一起交流、探讨,有什么问题希望大家可以积极评论交流,我也会及时更新,来督促自己学习进度。希望大家觉得不错的可以点赞、关注、收藏。


今天的文章就到这里啦~
喜欢的话,点赞、收藏⭐️、关注哦 ~

你可能感兴趣的:(#,OpenCV(C++),opencv,c++,计算机视觉,图像处理,算法)