OpenCV 4.1.1 编译错误解决方案(cudaoptflow.hpp not found)

OpenCV 4.1.1 编译错误解决方案(cudaoptflow.hpp not found)

📌 问题描述

在 Jetson 平台编译 OpenCV 4.1.1 + contrib 时出现如下错误:

bash 复制代码
fatal error: opencv2/cudaoptflow.hpp: No such file or directory
 #include "opencv2/cudaoptflow.hpp"

即使在 CMake 中添加了:

bash 复制代码
-D BUILD_opencv_cudaoptflow=OFF

仍然会在 pyopencv_generated_include.h 中出现
#include "opencv2/cudaoptflow.hpp",导致 Python 绑定编译失败。


📌 产生原因

  • OpenCV 4.1.1 的 Python 绑定生成器存在 bug ,会把已经关闭的
    cudaoptflow 模块仍然写进绑定头文件。
  • 因此,即使禁用了 cudaoptflow,Python 绑定依然会尝试包含
    opencv2/cudaoptflow.hpp。

🔧 解决方法

方法 1:彻底清理缓存并重新 CMake

  1. 删除缓存和绑定生成目录:

    bash 复制代码
    cd ~/opencv/opencv410/opencv-4.1.1/release
    rm -rf CMakeCache.txt CMakeFiles/ modules/python_bindings_generator
  2. 重新运行 CMake(关闭 cudaoptflow):

    bash 复制代码
    cmake -D WITH_CUDA=ON          -D CUDA_ARCH_BIN=5.3          -D CUDA_ARCH_PTX=""          -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.1/modules          -D WITH_GSTREAMER=ON          -D WITH_LIBV4L=ON          -D BUILD_opencv_python2=ON          -D BUILD_opencv_python3=ON          -D BUILD_TESTS=OFF          -D BUILD_PERF_TESTS=OFF          -D BUILD_EXAMPLES=OFF          -D CMAKE_BUILD_TYPE=RELEASE          -D CMAKE_INSTALL_PREFIX=/usr/local          -D OPENCV_GENERATE_PKGCONFIG=ON          -D BUILD_opencv_cudaoptflow=OFF          ..
  3. 编译:

    bash 复制代码
    make -j$(nproc)
    sudo make install

方法 2:禁用所有 CUDA Python 模块(更保险)

如果仍然失败,可以彻底关闭所有 CUDA 相关模块:

bash 复制代码
-D BUILD_opencv_cudalegacy=OFF -D BUILD_opencv_cudacodec=OFF -D BUILD_opencv_cudaarithm=OFF -D BUILD_opencv_cudawarping=OFF -D BUILD_opencv_cudaoptflow=OFF

这样可以避免 Python 绑定引用任何 CUDA 模块。


方法 3:手动修改绑定头文件

如果不想重新 CMake,也可以手动编辑:

bash 复制代码
nano ~/opencv/opencv410/opencv-4.1.1/release/modules/python_bindings_generator/pyopencv_generated_include.h

删除或注释掉:

cpp 复制代码
#include "opencv2/cudaoptflow.hpp"

然后继续编译:

bash 复制代码
make -j$(nproc)

✅ 总结

  • 如果不需要 NVIDIA Optical Flow,直接
    -D BUILD_opencv_cudaoptflow=OFF 即可,但要清理缓存。\
  • 如果还报错,可以关闭所有 CUDA 模块,或者手动删掉 Python 绑定里的
    cudaoptflow.hpp 引用。\
  • 如果确实需要 CUDA 光流功能,建议升级到 OpenCV ≥
    4.5
    ,该问题已修复。
相关推荐
晨间晓1 小时前
图片里的高频和低频是什么?用华为云码道开发 OpenCV 傅里叶频谱分析工具
opencv·计算机视觉·华为云
晨间晓1 小时前
图片里的阴影能不能减弱?用华为云码道开发 OpenCV 光照校正工具
人工智能·opencv·华为云
晨间晓16 小时前
图片里的细小噪点怎么平滑?用华为云码道开发 OpenCV 图像滤波对比工具
人工智能·opencv·华为云
偷吃米饭20 小时前
图片特征怎么描述?用华为云码道开发 OpenCV ORB 特征提取工具
人工智能·opencv·华为云
晨间晓21 小时前
图片里的关键点怎么找?用华为云码道开发 OpenCV FAST 特征点检测工具
人工智能·opencv·华为云
晨间晓21 小时前
二值图里的噪点怎么去掉?用华为云码道开发 OpenCV 形态学操作工具
人工智能·opencv·华为云
晨间晓1 天前
图片里的角点在哪里?用华为云码道开发 OpenCV Harris 角点检测工具
人工智能·opencv·华为云
晨间晓1 天前
图片细节丰富不丰富?用华为云码道开发 OpenCV 纹理复杂度分析工具
人工智能·opencv·华为云
richard_yuu2 天前
OpenCV 实战第 15 篇:G-API 图计算,工业流水线的 CPU/GPU 混合执行
人工智能·opencv·计算机视觉
老唐7772 天前
OpenCV5实测:纯CPU跑YOLO26目标检测
图像处理·人工智能·opencv·yolo·目标检测·计算机视觉