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
    ,该问题已修复。
相关推荐
TechNomad2 小时前
十一、OpenCV中图形的绘制
opencv
Wnq100725 小时前
如何在移动 的巡检机器人上,实现管道跑冒滴漏的视觉识别
数码相机·opencv·机器学习·计算机视觉·目标跟踪·自动驾驶
曾经的三心草13 小时前
OpenCV4-直方图与傅里叶变换-项目实战-信用卡数字识别
python·opencv·计算机视觉
luoganttcc14 小时前
在 orin 上 安装了 miniconda 如何使用 orin 内置的 opencv
人工智能·opencv·计算机视觉
JinchuanMaster14 小时前
cv_bridge和openCV不兼容问题
人工智能·opencv·计算机视觉
heisd_115 小时前
在编译opencv出现的问题
人工智能·opencv·计算机视觉
却道天凉_好个秋17 小时前
OpenCV(十一):色彩空间转换
人工智能·opencv·计算机视觉
zy_destiny19 小时前
【工业场景】用YOLOv8实现行人识别
人工智能·深度学习·opencv·算法·yolo·机器学习
黄晓魚20 小时前
双目三维重建-2双目系统标定
opencv·计算机视觉·机器视觉·三维视觉
却道天凉_好个秋1 天前
OpenCV(七):BGR
opencv·计算机视觉