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加速
最近在使用Golang的WEB框架Iris做了一个小的系统,但是里面有一些静态的资源,如css、js、html文件,如果只是通过go build打包的这些静态文件是打包不进去的,所以本文主要记录下如何将所以文件都打包的二进制文件中。
桌面应用很多都会在系统托盘中出现,那么Flutter的开发的桌面应用该如何增加到系统托盘中呢?本文将带大家一起尝试一下.
ss命令是类似并将取代netstat的工具,它能用来查看网络状态信息,包括TCP、UDP连接、端口等信息。它的优点是能够显示更多详细的有关网络连接信息,而且比netstat更快速高效。 如果系统中没有ss命令,就需要进行安装:yum install iproute
首先我们通过fake2db生成一批测试数据,生成过程查看《Python常用包整理-fake2db:一个生成测试数据的工具》
通过学习Flutter的布局,可以通过ListView、Container、Row、Column等组件来对界面进行布局。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
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问题