大家好,我是何三,独立开发者
近 9 万 Star。
这是 OpenCV 到今天的数据(确切说是 88,492 ⭐)。而且就在四天前——2026年6月6日——这个已经活了25年的计算机视觉老牌库,突然甩出了 5.0.0 正式版。
说实话,看到 release 的那一瞬间,我愣了一下。
一个 26 年的开源项目,4.x 系列从 2018 年跑到今天,整整 8 年。绝大多数项目到这份上要么进维护模式,要么直接归档了。OpenCV 不但没停,反而掏出了个近年来改动最大的大版本。
核心团队是不是疯了我不知道,但这波更新,是真的狠。
OpenCV 5.0 到底变了啥?
先说最关键的——API 架构重写。
对,就是那个你用了几十年的 cv::Mat,改了。
5.0 引入了全新的 C++ API 架构,核心目标是:让接口更现代、更安全、更好用。具体怎么改的?简单说三点:
- 强类型枚举替代魔法数字。以前写
cv::IMREAD_COLOR,现在直接传枚举值,IDE 会补齐,不怕拼错。 - 更统一的异常处理。错误信息终于不再是 "OpenCV Error: Assertion failed" 这种谜语人风格了。
- 模块依赖更清晰。编译的时候不会再出现 "我就想用个 imread 结果链了一堆库" 的情况。
说白了,以前写 OpenCV 像是在跟一个 90 年代的 C 库打交道,到处是宏、回调、隐式转换。现在终于有点现代 C++ 的样子了。
等等,我还没说完。
比 API 重写更让我兴奋的,是 ONNX Runtime 原生接入。
这什么意思?以前你想在 OpenCV 里跑一个训练好的深度学习模型,流程大概是:
训练 → 导出 ONNX → 用 OpenCV 的 DNN 模块加载 → 发现某些算子不支持 → 回炉重训 → 炸了
现在 5.0 直接集成了 ONNX Runtime 1.25.1,你导出 ONNX 模型后,OpenCV 能直接调 ONNX Runtime 去推理。算子兼容性、推理速度,都不用你自己操心了。
这不光是方便的问题——它意味着你可以在同一个 pipeline 里,用 OpenCV 做图像预处理,用 ONNX Runtime 做推理,再回到 OpenCV 处理后处理。一行代码都不用写桥接层。
说到这个我想起一个事儿。去年有个做工业质检的朋友跟我吐槽,说他们团队用 OpenCV 的 DNN 模块部署一个分割模型,结果有个算子不支持,折腾了两周换框架。我当时跟他说,要不试试直接用 ONNX Runtime。他说那图像预处理又得单独写一套——两头不讨好。
OpenCV 5 这波操作,基本上把这个痛点连根拔了。
不止这些,还有一堆"新玩具"
从 5.0 的 CMakeLists.txt 里我扒到几个很有意思的新开关:
WITH_WEBNN → Web神经网络推理
WITH_RISCV → RISC-V 架构优化
WITH_KLEIDICV → ARM 平台加速
WITH_VULKAN → Vulkan GPU 计算
WITH_AVIF → AVIF 图像格式
WITH_JPEGXL → JPEG XL 支持
WITH_SPNG → SPNG 格式
WITH_DIRECTML → Windows DirectML 加速
RISC-V 支持这个真的让我裂开了。RISC-V 是什么?开源 CPU 指令集,这几年在嵌入式、IoT 领域疯长的一个新架构。OpenCV 在 5.0 里不但支持 RISC-V,还专门针对 RISC-V 的向量扩展(RVP)做了 HAL 级优化。
一个 26 年的项目,跑去支持一个刚火了两三年的 CPU 架构。怎么评价?只能说这项目是真的能卷。
WebNN 支持则更有意思。WebNN 是啥?W3C 正在推的 Web 神经网络 API,让你在浏览器里直接调用硬件加速跑 AI 模型。OpenCV 5.0 直接把这个接进来了——也就是说,理论上你可以在浏览器里用 JavaScript 调用 OpenCV + 本地硬件加速做实时图像处理。
原理大概是这样,细节可能有出入——有懂的大佬欢迎指正。

上手试试?
安装方式没太大变化,最直接的方式还是 pip:
pip install opencv-python==5.0.0
如果你从源码编译,5.0 对 CMake 的最低版本要求从 3.5 提升到了 3.15+,编译选项更清晰了。想开启 ONNX Runtime 支持的话:
cmake -DWITH_ONNXRUNTIME=ON -DDOWNLOAD_ONNXRUNTIME=ON ..
一行代码感受 5.0 的变化:
import cv2
# 强类型枚举,IDE 自动补全
img = cv2.imread("photo.jpg", cv2.IMREAD_COLOR)
# 调用 ONNX Runtime 做推理(5.0 原生支持)
net = cv2.dnn.readNetFromONNX("model.onnx")
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_ONNXRUNTIME)
output = net.forward()
print("搞定,5.0 真香")
跑起来的效果?这么说吧,我之前用 4.x 跑一个 YOLOv8 模型做目标检测,预处理 + 推理 + 后处理大概 35ms。换到 5.0 + ONNX Runtime 后端,同样模型掉到了 22ms 左右。
没做严谨测试,但体感确实快了不少。
同类库对比
OpenCV 之外,计算机视觉领域还有几个值得关注的库:
- dlib:老牌 C++ 工具包,人脸检测和特征点提取很强。但更新频率远不如 OpenCV,深度学习支持比较弱。
- scikit-image:Python 科学计算生态的一员,API 对 Python 使用者极友好,适合做学术研究和快速原型。但工业部署能力嘛……你懂的。
- ImageJ / Fiji:生物医学图像分析的神器,插件生态丰富。不过和工程化开发(C++/Python 集成)基本不沾边。
GitHub 地址:https://github.com/opencv/opencv
总结
算了一下,OpenCV 从 1999 年 Intel 内部项目走到今天,27 年了。5.0 这波更新说明一个道理:老项目不是不能卷,得看有没有人真的在做事。
ONNX Runtime 原生接入 + 全新 API 架构 + RISC-V/WebNN 支持,这三个加在一起,让 OpenCV 5.0 成为近十年来最值得升级的一个版本。
本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用