OpenCV简介
一、OpenCV简介
OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉处理开源软件库,是由Intel公司俄罗斯团队发起并参与和维护,支持与计算机视觉和机器学习相关的众多算法,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序,该程序库也可以使用英特尔公司的IPP进行加速处理。
二、OpenCV优势
编程语言
OpenCV基于C++实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API,结合了OpenCV C++API和Python语言的最佳特性。跨平台
OpenCV可以在不同的系统平台上使用,包括Windows,Linux,OS,X,Android和iOS。基于CUDA和OpenCL的高速GPU操作接口也在积极开发中。活跃的开发团队
自从第一个预览版本于2000年公开以来,一直在进行更新。丰富的API
完善的传统计算机视觉算法,涵盖主流的机器学习算法,同时添加了对深度学习的支持。
三、OpenCV应用领域
1、人机互动
2、物体识别
3、 图像分割
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。
4、人脸识别
5、动作识别
6、 运动跟踪
7、机器人
8、运动分析
9、机器视觉
10、结构分析
11、汽车安全驾驶
四、OpenCV-Python
Opencv-Python是旨在解决计算机视觉问题的专用库。
Python是由Guidovan Rossum发起的通用编程语言,很快就非常流行,主要是因为他的简单性和代码可读性。它使得程序员可以用较少的代码行表达想法,而不会降低可读性。与C/C++之类的语言,Python速度较慢。也就是说,可以使用C/C++轻松扩展Python,这使得我们能够用C/C++编写计算机密集型代码并创建可用作Python模块的Python包装器。它给我们带来了两个好处: 首先,代码与原始C/C++代码一样快(因为它是在后台运行的实际C++代码), 其次,在Python中比C/C++编写代码更容易。Opencv-Python是原始Opencv C++实现的Python包装器。
Opencv-Python利用了Numpy,这是一个高度优化的库,用于使用MATLAB样式的语言进行数值运算。所有Opencv数组结构都与Numpy数组相互转换。这也使与使用Numpy的其他库(例如Scipy和Matplotlib)的集成变得更加容易。
五、OpenCV核心模块介绍
Core:核心组件模块
包含:基础结构和操作,动态结构,数组操作,绘图函数,XML等等。
Imgproc:图像处理模块
包含:图像滤波,几何图像变换,混合图像变换,直方图,形状匹配运动分析及目标追踪,目标检测。
Highguii:顶层GUI及视频I/O
包含:用户界面,读写视频,QT新功能。
Video:视频分析
包含:运动分析及目标跟踪。
Calib3d:摄像机标定及三维重建
Features2d:二维特征框架
包含:特征描述和检测,特征提取,角点与匹配等等。
Objdetect:目标检测
包含:SVM及其它分类器
Mi:机器学习
包含:支持向量机,决策树,随机树,最大期望,神经网络,机器学习等等。
Flann:聚类及多维空间搜索
包含:快速最近邻搜索及聚合
GPU:计算机视觉中GPU加速
包含:GPU模块及数据结构,图像分析和处理。
Photo:计算图像
包含:图像修复及去噪。
Stitching:图像拼接
包含:图像拼接,接缝估计,图像融合技术。
Nonfree:付费功能
包含:特征检测与描述相关受保护成果。
Contrib:实验成果
未成熟的理论应用。
Legacy:弃用的成果
包含一些弃用的成果。
Ocl:计算机视觉中OpenCL加速
最近关注流媒体服务器来做网络直播,本想使用阿里云的流媒体服务器,由于费用的问题还是想能否自己搭建一个流媒体服务器供自己测试使用。果不其然,Nginx居然如此强大,可以用来做流媒体服务器。本文将具体介绍流媒体服务器的搭建过程和使用过程。
groupadd命令用户创建新的用户组。但是groupadd命令一般用途不大,因为在使用useradd命令创建用户的时候同时还会创建与用户同名的用户组。
修改centos7系统语言
Mysql二进制日志文件是非常重要,记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件,所以本文主要记录Mysql二进制文件如何开启和类型。
开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification),这就是开闭原则的经典定义。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题