购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6 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由于其开源特性以及强大的社区支持,发展极其迅速。OpenCV 1.0正式版本于2006年发布,可以运行在Mac OS以及Linux平台上,但是主要提供C的接口;2009年发布了OpenCV 2.0版本,其代码已显著优化,带来了全新的C++函数的接口,将OpenCV的能级无限放大,使开发者使用起来更加方便。同时,增加了新的平台支持,包括iOS和Android,通过CUDA和OpenGL实现了GPU加速;在编程语言方面,为Python和Java用户提供了接口。2014年8月,OpenCV 3.0 Alpha发布,其最重大的革新之处在于OpenCV 3.0改变了项目架构的方式。之前的OpenCV是一个相对整体的项目,各个模块都以整体的形式构建,然后组合在一起,而OpenCV 3抛弃了整体架构,使用内核+插件的架构形式,使OpenCV更加轻量化。当前,OpenCV随着工业4.0与机器人无人机的发展,已经在应用领域得到了广泛的应用,越来越多从事机器视觉与图像处理的开发者选择OpenCV作为开发工具实现应用开发。

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

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

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

(3)依赖硬件的一些特别的解决方案(比如视频监控、制造控制系统、医疗设备)。

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

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

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

编写本书时,OpenCV的新版本为4.10,本书采用该版本,它发布于2024年6月,如图1-5所示。

图1-5

OpenCV最显著的优化是从4.10开始对JPEG图像的读取和解码有了77%的速度提升,超过了scikit-image、imageio、pillow。其他改进点如下:

(1)dnn模块的改进,包括:

● 改善内存消耗。

● 增加了将模型转储为与Netron工具兼容的pbtxt格式的功能。

● 支持多个新的TFlite、ONNX和OpenVINO层。

● 改进了现代Yolo探测器支持。

● 添加了CuDNN 9+和OpenVINO 2024支持。

(2)core模块的改进,包括:

● 为cv::Mat添加了CV_FP16数据类型。

● 扩展了HAL API,用于minMaxIdx、LUT、meanStdDev和其他函数。

(3)imgproc模块的改进,包括:

● 为cv::remap添加了相对位移场选项。

● 重构了findContours和EMD。

● 扩展了HAL API,用于projectPoints、equalizeHist、Otsu阈值和其他功能。

● 添加了针对现代ARMv8和ARMv9平台优化的新底层HAL库(KleidiCV)。

(4)支持CUDA 12.4+。

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

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

(7)OpenCV Model Zoo提供跨平台的预训练深度学习模型。其新增功能包括:

● 支持更多的模型结构,例如新的卷积架构或者神经网络架构。

● 提升模型的性能,可能通过模型优化或者使用更高效的实现方式。

● 提供更多的预处理和后处理的选项,以便用户可以更灵活地使用这些模型。

● 增加对新硬件或者新框架的支持,例如新版的TensorRT或是ONNX Runtime。 kkCNK8o9z68YWWu0BGqj3eV1BGFTODIbX5dXb+qpNqM1xYRfUVxo/HJgdkKpLI6T

点击中间区域
呼出菜单
上一章
目录
下一章
×