AI
+ -

opencv和openvino模型加载

2025-07-21 7 0

下面详细对比 cv::dnn::readNet(OpenCV DNN模块)和 ov::Core::read_model(OpenVINO)读取模型的区别:


1. 所属库不同

  • cv::dnn::readNet
    属于 OpenCV 的 DNN(深度神经网络)模块。
    用于在 OpenCV 环境下加载和推理深度学习模型。

  • ov::Core::read_model
    属于 OpenVINO(Open Visual Inference and Neural Network Optimization)推理引擎。
    用于在 OpenVINO 环境下加载和推理深度学习模型。


2. 支持的模型格式

  • cv::dnn::readNet
    支持多种主流深度学习框架的模型,如:

    • Caffe (.prototxt + .caffemodel)
    • TensorFlow (.pb, .pbtxt)
    • ONNX (.onnx)
    • Darknet (.cfg + .weights)
    • Torch, MXNet, PaddlePaddle(部分支持)
    • OpenVINO IR (.xml + .bin)(部分支持)
  • ov::Core::read_model
    支持的格式主要有:

    • OpenVINO IR (.xml + .bin)
    • ONNX (.onnx)
    • PaddlePaddle (.pdmodel + .pdiparams)
    • TensorFlow(部分支持)
    • 其它格式需转换为上述格式

3. 读取后的模型对象

  • cv::dnn::readNet
    返回 cv::dnn::Net 对象,专为 OpenCV DNN 推理设计。

  • ov::Core::read_model
    返回 std::shared_ptr<ov::Model>,专为 OpenVINO 推理引擎设计。


4. 推理性能与硬件支持

  • cv::dnn::readNet

    • 主要用于 CPU 推理,也支持 OpenCL、Vulkan、Intel OpenVINO 后端(需编译支持)。
    • 性能适中,适合轻量级应用和跨平台部署。
  • ov::Core::read_model

    • 专为 Intel 硬件(CPU、GPU、VPU、FPGA等)优化,支持多种硬件加速。
    • 性能更高,适合工业级、边缘计算等场景。

5. 典型用法对比

OpenCV DNN:

cv::dnn::Net net = cv::dnn::readNet("model.onnx");
cv::Mat input = ...;
net.setInput(input);
cv::Mat output = net.forward();

OpenVINO:

ov::Core core;
auto model = core.read_model("model.onnx");
auto compiled_model = core.compile_model(model, "CPU");
auto infer_request = compiled_model.create_infer_request();
// 设置输入,执行推理...

6. 适用场景

  • cv::dnn::readNet
    适合需要简单集成到 OpenCV 图像处理流程、跨平台、轻量级推理的场景。

  • ov::Core::read_model
    适合需要高性能推理、硬件加速、工业级部署的场景。


总结表

特性 cv::dnn::readNet (OpenCV) ov::Core::read_model (OpenVINO)
支持格式 多种主流框架 IR, ONNX, PaddlePaddle等
返回对象 cv::dnn::Net std::shared_ptr<ov::Model>
性能 一般 高,支持多种硬件加速
适用场景 跨平台、轻量级 工业级、高性能、Intel硬件
依赖 OpenCV OpenVINO

0 篇笔记 写笔记

作者信息
站长漫谈
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!