首页 > 编程笔记 > 通用技能 阅读:32

OpenCV是什么,OpenCV简介(新手必看)

OpenCV 是一个基于 BSD 许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在 Linux、Windows、Android 和 Mac OS 操作系统上。

OpenCV 用 C++ 语言编写,它具有 C++、Python、Java 和 MATLAB 接口,并支持 Windows、Linux、Android 和 Mac OS。OpenCV 主要倾向于实时视觉应用,并在可用时使用 MMX 和 SSE 指令,如今也提供对于 C#、Ch、Ruby、GO 的支持。

OpenCV 提供的视觉处理算法非常丰富,并且其部分以 C 语言编写,加上开源特性,如果处理得当,不需要添加新的外部支持也可以完整地编译链接生成执行程序,所以很多人用它来做算法的移植。OpenCV 的代码经过适当改写,可以正常地运行在 DSP 系统和 ARM 嵌入式系统中。

OpenCV 是一个开放源码的计算机视觉应用平台,由英特尔公司下属研发中心俄罗斯团队发起该项目,开源 BSD 证书。OpenCV 的目标是实现实时计算机视觉,也就是用摄影机和计算机代替人眼对目标进行识别、跟踪以及测量等,并进一步进行图像处理。

OpenCV 由于其开源特性以及强大的社区支持,发展极其迅速:
计算机视觉市场巨大且持续增长,但这方面没有标准 API,如今的计算机视觉软件大概有以下 3 种:
  1. 研究派代码(慢,不稳定,独立,与其他库不兼容);
  2. 耗费很高的商业化工具(比如Halcon、MATLAB+Simulink);
  3. 依赖硬件的一些特别的解决方案(比如视频监控、制造控制系统、医疗设备)。

这是如今的现状,而标准的 API 将简化计算机视觉程序和解决方案的开发,OpenCV 致力于成为这样的标准 API。

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

OpenCV 的应用领域非常广泛,比如人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析、汽车安全驾驶、军工、卫星导航等。可以说学好了 OpenCV,就业和职业发展前景广阔!

OpenCV 最显著的优化是从 4.10 开始对 JPEG 图像的读取和解码有了 77% 的速度提升,超过了 scikit-image、imageio、pillow。其他改进点如下:
1) dnn 模块的改进,包括:
  1. 改善内存消耗;
  2. 增加了将模型转储为与 Netron 工具兼容的 pbtxt 格式的功能;
  3. 支持多个新的 TFlite、ONNX 和 OpenVINO 层;
  4. 改进了现代 Yolo 探测器支持;
  5. 添加了 CuDNN 9+ 和 OpenVINO 2024 支持。

2) core 模块的改进,包括:
3) imgproc 模块的改进,包括:
  1. 为 cv::remap 添加了相对位移场选项;
  2. 重构了 findContours 和 EMD;
  3. 扩展了 HAL API,用于 projectPoints、equalizeHist、Otsu 阈值和其他功能;
  4. 添加了针对现代 ARMv8 和 ARMv9 平台优化的新底层 HAL 库(KleidiCV)。

4) 支持 CUDA 12.4+。

5) 添加了 zlib-ng 作为经典 zlib 的替代品。

6) 对 Wayland、Apple VisionOS 和 Windows ARM64 的实验性支持。

7) OpenCV Model Zoo 提供跨平台的预训练深度学习模型。其新增功能包括:
  1. 支持更多的模型结构,例如新的卷积架构或者神经网络架构;
  2. 提升模型的性能,可能通过模型优化或者使用更高效的实现方式;
  3. 提供更多的预处理和后处理的选项,以便用户可以更灵活地使用这些模型;
  4. 增加对新硬件或者新框架的支持,例如新版的 TensorRT 或是 ONNX Runtime。

相关文章