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

news2024/11/28 19:24:21

前言

😊😊😊欢迎来到本博客😊😊😊

🌟🌟🌟 本专栏主要结合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

  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是学习图像处理理论知识比较好的一个途径,大家也可以自己尝试写写博客,来记录大家平时学习的进度,可以和网上众多学者一起交流、探讨,有什么问题希望大家可以积极评论交流,我也会及时更新,来督促自己学习进度。希望大家觉得不错的可以点赞、关注、收藏。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百数低代码开发平台助力生产管理:制造管理系统

随着全球经济化与信息化,制造企业的生产管理系统的建立对于制造业企业的信息化以及生产的智能化具有重要的意义,同时也是促进现代工业进步和发展的基础条件之一。我国制造业属于传统行业,凭借生产规模大且劳动力资源丰富在全世界拥有着一定地…

[附源码]计算机毕业设计springboot旅游度假村管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Android 反编译入门(基于 Mac)

1 反编译基础 1.1 什么是反编译 定义:反编译就是将可执行程序转换为某种形式的高级编程语言的过程。 1.2 APK 文件的构成 首先,我们通过一张图来看看 APK 的整体组成: 可以看到,APK 主要由六个部分组成: Dex 文件…

什么值得一个头条?从世界杯看“头条”正确打开方式

“足球皇帝”贝肯鲍尔曾说:“在绿茵场上滚动的不是足球,而是黄金。” 卡塔尔世界杯不仅是球迷的盛宴,也是品牌的盛宴。绿茵场广告屏上,众多品牌纷纷现身。还有部分中国企业通过签约球队和球星等形式露面世界杯,共同挖…

【附源码】计算机毕业设计JAVA紫陶文化传播与学习交流网站

【附源码】计算机毕业设计JAVA紫陶文化传播与学习交流网站 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术:…

熤星传媒文化:抖音怎么切换到旧版本?

抖音现在也在不断地更新版本,但是很多小伙伴可能想知道一些新版本的功能,就随着了、系统去升级了,但是用着用着发现自己更喜欢旧版本的,那么抖音店铺又怎么去做店铺带货呢?跟着熤星传媒小编来一起看看吧! 帐…

OWASP top10 的介绍

​ OWASP top10 的介绍 2021年版TOP 10产生三个新类别,且进行了一些整合 ​​ A01:失效的访问控制 ​ 从第五位上升称为Web应用程序安全风险最严重的类别,常见的CWE包括:将敏感信息泄露给未经授权的参与者、通过发送的数据泄…

07 CSS04

目标: 1、结构伪类选择器 2、伪元素 3、标准流 4、浮动 5、清除浮动 6、(拓展)BFC介绍 一、结构伪类选择器 1、作用与优势 作用:根据元素在HTML中的结构关系查找元素 优势:减少对于HTML中类的依赖,有…

[附源码]计算机毕业设计springboot家庭整理服务管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【MySQL】 MySQL亿级数据、主从架构,Sharding分片

数据库Mysql 内容管理MySQL填充亿级数据Insert into select存储过程loop insertLoadfile 导入CVS文件MySQL基准测试: sysbench、mysqlslapsysbenchmysqlslapSQL优化分页查询优化慢SQL日志工具mysqldumpslowMySQL主从复制MySQL主从复制 knowledgeMySQL二进制日志log_…

APS生产计划排产降低企业的生产运营成本

企业运营成本是企业管理的关键,也是企业加强管理,提高企业效益的重要途径,在多数企业的发展中,如何更有效地控制企业运营成本将显得极为突出和十分重要。 APS生产计划排产可以从“设备、物料、人力”三方面降低企业的运营成本&…

基于Go语言的网盘开发(GloudDisk)

(记录一下自己做项目的过程) 基于go-zero实现的简易的网盘系统,如果有小伙伴对这个项目感兴趣,可以去网上搜索一些资料。这里推荐一下我学习的来源:【项目实战】基于Go-zero、Xorm的网盘系统_哔哩哔哩_bilibili 确定…

AutoCAD Electrical 2022—项目中新建、添加、删除图纸

右键点击项目—选择新建图纸; 点击快捷图标,新建图形; 弹出对话框,在名称中输入图纸名称; 模板为图框的样式,位置代号,图纸保存的位置; 其他根据需要填写; 填写完点击…

JavaScript -- 02. 变量和数据类型

文章目录变量和数据类型1 数值(Number)1.1 普通数值1.2 其他进制的数字2 大整数(BigInt)3 字符串(String)3.1 基础表示3.2 转义字符3.3 模板字符串4 布尔值(Boolean)5 空值(Null)6 未定义(Undefined)7 符号(Symbol&…

6-2 装载问题(分支限界)

6-2 装载问题(分支限界) 一、问题描述 有一批共个集装箱要装上2艘载重量分别为C1和C2的轮船,其中集装箱i的重量为Wi,且 采用下面的策略可得到最优装载方案: (1)将第一艘轮船尽可能装满; (2)将剩余集装箱装上第二艘轮…

基于rsync daemon 实现 sersync——sersync实现实时数据同步

1 sersync 介绍 sersync类似于inotify,同样用于监控,但它克服了inotify的缺点. inotify最大的不足是会产生重复事件,或者同一个目录下多个文件的操作会产生多个事件,例如,当监控目录中有5个文件时,删除目录…

[附源码]计算机毕业设计springboot考试系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

学习C语言的优质网站

1. 初衷 C语言是最原始的操作操作数据结构和算法的一门编程语言,没有高级语言的封装,最能锻炼个人的算法思维和能力。 2. 编程网站推荐 2.1 javatpoint https://www.javatpoint.com/static-in-c 2.2 includehelp https://www.includehelp.com/c/ 2.…

Hadoop学习笔记——HDFS

文章目录一、HDFS概述1.1、HDFS产出背景及定义1.1.1 HDFS产生背景1.1.2 HDFS定义1.2、HDFS优缺点1.2.1、HDFS优点1.2.2、HDFS缺点1.3、HDFS组成架构1.4、HDFS文件块大小1.5、限制二、HDFS的Shell操作2.1、基本语法2.2、命令大全2.3、常用命令实操2.3.1 准备工作2.3.2 上传一、H…

快速复现 实现 facenet-retinaface-pytorch 人脸识别 windows上 使用cpu实现

目录0 前言1 搭建环境与项目2 人脸预测与结果展示0 前言 这一次要复现的是人脸识别中的 facenet-retinaface-pytorch 是在上一次博客的内容上更进一步 快速复现 实现 facenet-pytorch 人脸识别 windows上 使用cpu实现 人脸对比 参考了: Pytorch 利用Facenet和Reti…