声明:本课程内容由51Halcon原创,转载请标明出处。
一.什么是OpenCV?
OpenCV全称Open Source Computer Vision Library,也就是我们通常说的开源计算机视觉和机器视觉库(基于C++语言开发)。
最初是由Intel开发,它里面包括数百种计算机视觉算法。现在的OpenCV由开源组织维护,基于BSD许可开源发行。
OpenCV 旨在为计算机视觉应用程序提供通用基础架构,并加速机器感知在商业产品中的使用。作为 BSD 许可的产品,OpenCV 使企业可以轻松地使用和修改代码。
该库拥有超过 2500 种优化算法,其中包括一整套经典和最先进的计算机视觉和机器学习算法。
这些算法可用于检测和识别人脸、识别对象、对视频中的人类行为进行分类、跟踪摄像机运动、跟踪移动对象、提取对象的 3D 模型、从立体摄像机生成 3D 点云、将图像拼接在一起以产生高分辨率整个场景的图像,从图像数据库中查找相似图像,从使用闪光灯拍摄的图像中去除红眼,跟随眼球运动,识别风景并建立标记以将其与增强现实叠加等。
OpenCV 拥有超过 47,000 人的用户社区和估计下载量超过 1800 万, 该library被公司、研究小组和政府机构广泛使用。
可以运行在Windows、Linux、Android、Mac OS等系统上,它轻量而且高效,2.x以后的版本全部由C++进行开发完成,摒弃了1.x版本的C编译相关API,而且提供了其他语言比如Python、Ruby、Matlab等接口,实现了很多计算机视觉相关的通用算法。OpenCV 主要倾向于实时视觉应用,并在可用时利用 MMX 和 SSE 指令。 目前正在积极开发功能齐全的 CUDA和 OpenCL接口。有超过 500 种算法和大约 10 倍的函数组成或支持这些算法。OpenCV 是用 C++ 原生编写的,并且具有与 STL 容器无缝协作的模板化界面。
除了谷歌、雅虎、微软、英特尔、IBM、索尼、本田、丰田等使用该库的知名公司外,还有许多初创公司,如 Applied Minds、VideoSurf 和 Zeitera,广泛使用 OpenCV。OpenCV 的部署用途涵盖从拼接街景图像、检测以色列监控视频中的入侵、监控中国的矿山设备、帮助机器人在 Willow Garage 导航和拾取物体、检测欧洲的游泳池溺水事故、在西班牙和纽约,在土耳其检查跑道上的碎片,检查世界各地工厂的产品标签,以及在日本进行快速人脸检测。
二.OpenCV结构
OpenCV有一个模块化的结构,这意味着这个包括几个共享的或者静态的库。
以下模块可用:
核心功能(core) 一个定义基本数据结构的紧凑模块,包括所有其他模块使用的密集多维数组和基本功能。
图像处理(imgproc) 一个图像处理模块,包括线性和非线性图像过滤、几何图像转换(调整大小、仿射和透视变形、基于通用表格的重新映射)、色彩空间转换、直方图等。
视频分析(video) 一个视频分析模块,包括运动估计、背景减除和对象跟踪算法。
相机校准和三维重建(calib3d) 基本的多视图几何算法,单个和立体相机校准,物体姿态估计,立体对应算法,和三维重建的元素。
2D特征框架(features2d) 显著特征检测器、描述符和描述符匹配器。
对象检测(objdetect) 检测对象和预定义类的实例(例如,人脸、眼睛、杯子、人、汽车等)。
高级GUI(high GUI) 简单UI功能的易用接口。
视频I/O (videoio) 一个易于使用的视频捕获和视频编解码器接口。
...其他一些辅助模块,比如FLANN和Google测试包装器、Python绑定等等。\
三.官网资源
官方网站:https://opencv.org/
文档:https://docs.opencv.org/4.8.0/d1/dfb/intro.html
Github主程序:https://github.com/opencv/opencv
第三方贡献库:https://github.com/opencv/opencv_contrib
Python接口:https://github.com/opencv/opencv-python
发行版:https://github.com/opencv/opencv/releases
四.编译相关:
CMake:
CMake 是一个开源、跨平台的工具系列,旨在构建、测试和打包软件。CMake 用于使用简单的平台和编译器独立配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机 makefile 和工作区。这套 CMake 工具由 Kitware 创建,以满足 ITK 和 VTK 等开源项目对强大的跨平台构建环境的需求。
下载地址:https://cmake.org/download/
五.其他说明
51Halcon系列学习教程将采用目前最新的OpenCV 4.8.0、VC++(和QT)进行演示讲解,由于网上很多资料很老旧,所以本教程将带领大家一起淌所有新版本遇到的坑。
需要说明的是:
发行版:已经编译好了vc14(vs2015)和vc15(vs2017)的库,直接可以在vc16(vs2019)的VC++环境中使用。
源码版:需要自行编译,针对visual studio和QT是不一样的,包括一些设置,接下来的章节我们会进行详细介绍。
|