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
    ,该问题已修复。
相关推荐
TechNomad7 小时前
六、OpenCV中的图像读写
opencv
苏世-顾长歌10 小时前
Android studio导入OpenCV报“Unresolved reference: android“
android·opencv·android studio
荼蘼11 小时前
OpenCV 人脸检测、微笑检测 原理及案例解析
人工智能·opencv·计算机视觉
算法打盹中14 小时前
计算机视觉:基于YOLOv11 实例分割与OpenCV 在 Java 中的实现图像实例分割
opencv·yolo·计算机视觉·图像分割·实例分割·yolo11
CLTHREE15 小时前
处理视频抽帧并转换成json
python·opencv·计算机视觉
Monkey的自我迭代17 小时前
光流估计(可用于目标跟踪)
人工智能·opencv·计算机视觉
WeiJingYu.1 天前
O3.6opencv
人工智能·opencv·计算机视觉
_nirvana_w_1 天前
PyQt6+OpenCV 实战:打造功能完备的数字图像处理 GUI 系统
人工智能·python·qt·opencv·计算机视觉
华法林的小助手1 天前
windows c++环境 使用VScdoe配置opencv
c++·windows·opencv
何以解忧唯有撸码1 天前
OpenCvSharp基于颜色反差规避FBA面单贴标2
opencv