You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关闭videoio编译opencv-python源码时出现文件未找到错误

问题:关闭OPENCV_VIDEOIO后编译报错找不到videoio.hpp

错误信息

/opencv-python/opencv/modules/gapi/include/opencv2/gapi/streaming/cap.hpp:26:10: fatal error: opencv2/videoio.hpp: No such file or directory
 #include <opencv2/videoio.hpp>

执行失败的Docker命令

RUN pip wheel . --verbose

当前CMake参数

ENV CMAKE_ARGS="\
    -D BUILD_JAVA=OFF \
    -D BUILD_PERF_TESTS=ON \
    -D BUILD_TESTS=ON \
    -D BUILD_opencv_apps=OFF \
    -D BUILD_opencv_freetype=OFF \
    -D BUILD_opencv_calib3d=OFF \
    -D BUILD_opencv_videoio=OFF \
    -D BUILD_opencv_python2=OFF \
    -D BUILD_opencv_python3=ON \
    -D WITH_GSTREAMER=OFF \
    -D VIDEOIO_ENABLE_PLUGINS=OFF \
    -D ENABLE_FAST_MATH=1 \
    -D ENABLE_PRECOMPILED_HEADERS=OFF \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D INSTALL_TESTS=OFF"

解决建议

  • 关闭GAPI模块:GAPI的streaming组件硬依赖videoio,若你的项目不需要GAPI功能,直接在CMake参数中添加 -D BUILD_opencv_gapi=OFF,就能避免编译依赖videoio的GAPI代码。
  • 禁用GAPI对videoio的依赖检测:如果需要保留GAPI但不需要streaming功能,尝试添加 -D HAVE_opencv_videoio=OFF,让CMake告知GAPI跳过videoio相关的代码编译。部分版本可能需要手动调整GAPI的CMake配置,屏蔽streaming模块的编译选项。
  • 手动修改源码补丁:若必须同时保留GAPI和关闭videoio,需修改cap.hpp文件,将头文件包含改为条件编译:
    #ifdef HAVE_opencv_videoio
    #include <opencv2/videoio.hpp>
    #endif
    
    同时修改GAPI中使用videoio接口的源码部分,确保无videoio时不会触发相关调用。这种方式需要维护自定义补丁,仅适合特殊场景。

内容的提问来源于stack exchange,提问作者Joey Grisafe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:10:20