yolov5-seg 自带推理脚本,使用dnn推理时报错

yolov5-seg训练完成之后,转成了onnx模型,使用yolov5自带的predict.py脚本进行推理,默认情况下用的是onnxruntime推理,能正常出结果。然后增加了--dnn参数,想用opnecv的dnn进行推理,却出现了如下报错(附图),请问是什么原因导致的呢,我的推理命令是:

python ./segment/predict.py --weight ./runs/train-seg/exp4/weights/best.onnx --source ./datasets/result/images/test --imgsz 1536 --dnn

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    问题原因是在使用OpenCV的DNN进行推理时,报错"ERROR:src/opencv/modules/dnn/src/dnn.cpp:1645: error: (-2:Unspecified error) COI: Video I/O: No backend available in function 'icvExtractFilePart' ",这个错误通常是由于OpenCV编译时未开启支持Video I/O的选项导致的。解决这个问题需要重新编译OpenCV并开启Video I/O选项,下面是具体的解决步骤:

    步骤一:进入OpenCV源码路径

    cd <opencv_source_path>
    

    步骤二:创建一个新的构建目录

    mkdir build
    cd build
    

    步骤三:执行CMake命令,开启Video I/O选项

    cmake -D CMAKE_BUILD_TYPE=Release \
          -D WITH_FFMPEG=ON \
          -D WITH_CUDA=OFF \
          -D BUILD_TESTS=OFF \
          -D BUILD_PERF_TESTS=OFF \
          ..
    

    注意:根据自己的需求可以添加或删除其他选项,并根据CUDA支持情况决定是否使用WITH_CUDA选项。

    步骤四:编译OpenCV

    make -j8
    

    注意:根据系统的CPU核心数进行调整命令中的-j参数。

    步骤五:安装OpenCV

    sudo make install
    

    完成以上步骤后,重新运行推理脚本,即可使用OpenCV的DNN进行推理。如果问题仍然存在,请确认您的机器上是否安装了ffmpeg库,如果没有安装,请先安装ffmpeg库。

    如果以上步骤仍然不能解决问题,请提供更多错误信息,以便我能更准确地帮助您解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^