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
    ,该问题已修复。
相关推荐
WSSWWWSSW7 小时前
Python OpenCV图像处理与深度学习:Python OpenCV图像滤波入门
图像处理·python·opencv
WuLaHH8 小时前
OpenCV-CUDA 图像处理
图像处理·人工智能·opencv
WSSWWWSSW10 小时前
Python OpenCV图像处理与深度学习:Python OpenCV视频处理入门
图像处理·python·opencv
弗锐土豆1 天前
程序员之电工基础-CV程序解决目标检测
opencv·目标检测·计算机视觉·cv
肥仔哥哥19301 天前
基于OpenCv做照片分析应用一(Java)
java·人工智能·opencv·基于图片关键点分析截图
却道天凉_好个秋1 天前
计算机视觉(四):二值化
图像处理·人工智能·opencv·计算机视觉·二值化
爱凤的小光1 天前
Opencv的数据结构
数据结构·opencv
PAQQ1 天前
使用node-red+opencv+mqtt实现相机图像云端查看
人工智能·opencv·计算机视觉
星期天要睡觉2 天前
(纯新手教学)计算机视觉(opencv)实战十——轮廓特征(轮廓面积、 轮廓周长、外接圆与外接矩形)
人工智能·opencv·计算机视觉