OpenCV介绍

介绍

OpenCV是一个基于BSD许可(开源)发行的跨平台 计算机视觉库。

于1999年由Intel建立,如今由Willow Garage提供支持

它轻量级而且高效:由一系列 C 函数和少量 C++ 类构成

提供 Python、Java 、 MATLAB/OCTAVE(版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#、Ch、Ruby,GO的支持。

核心特性

类别 特性 描述
跨平台支持 多操作系统 支持 Windows、Linux、macOS、Android、iOS 等
编程语言 多语言接口 C++(原生)、Python、Java、MATLAB/Octave 等
功能模块 全面覆盖 图像处理、特征检测、目标识别、机器学习、视频分析等
性能优化 高效计算 利用多核CPU、GPU(CUDA/OpenCL)加速,优化算法实现
开源协议 BSD协议 免费用于商业和非商业用途,可自由修改和分发
社区支持 活跃生态 庞大的开发者社区,丰富的文档和教程资源

主要功能模块

  • core:核心功能模块(矩阵操作、数据结构等)
  • imgproc:图像处理(滤波、边缘检测、形态学操作等)
  • imgcodecs:图像文件读写
  • videoio:视频捕获和处理
  • highgui:图形用户界面
  • features2d:2D特征检测(SIFT、SURF、ORB等)
  • objdetect:目标检测(人脸检测、Haar级联等)
  • ml:机器学习算法(SVM、决策树、神经网络等)
  • dnn:深度学习模块(支持TensorFlow、PyTorch模型)
  • calib3d:相机标定和3D重建

支持平台

  • Windows
  • Linux
  • Mac OS
  • FreeBSD
  • OpenBSD
  • Android
  • iOS

典型应用场景

  1. 计算机视觉:

    • 人脸识别与检测
    • 物体识别与跟踪
    • 图像分割与重建
    • 智能医疗
  2. 图像处理:

    • 图像滤波与增强
    • 特征提取与匹配
    • 全景拼接
  3. 视频分析:

    • 运动检测
    • 行为识别
    • 视频稳定
  4. 深度学习:

    • 目标检测(YOLO、SSD)
    • 图像分类
    • 语义分割
  5. 工业与机器人:

    • 视觉导航(汽车自动驾驶)
    • 质量检测
    • 3D重建

为什么有OpenCV

计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:

  1. 研究代码(慢,不稳定,独立并与其他库不兼容)

  2. 耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)

  3. 依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。

OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。

下图为OpenCV与当前其他主流视觉函数库的性能比较。

引用:
https://baike.baidu.com/item/opencv/10320623


原文出处:/show_1EF5N1nnaRky.html