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
    ,该问题已修复。
相关推荐
这个人懒得名字都没写13 小时前
OpenCV 官方教程中的测试图片Can’t find required data file
python·opencv
AI的探索之旅14 小时前
97 个 OpenCV 实例(十七):图片读写,FileStorage 与 JPEG 采样
人工智能·opencv·计算机视觉
牧羊人.33314 小时前
计算机视觉基础第15章|DNN实现图像风格迁移
图像处理·人工智能·深度学习·opencv·计算机视觉
欧特克_Glodon14 小时前
OpenCV计算机视觉开发入门与实践<二十九>:grabCut算法分割图像
opencv·算法·计算机视觉·图像分割·grabcut 算法
leoZ2311 天前
AI+前端提效-09 AI赋能前端测试:单元测试、E2E测试自动生成,提升覆盖率
前端·人工智能·opencv·目标检测·数据挖掘·单元测试·语音识别
别动我齐刘海2 天前
从0到1独立搭建机器人软件系统
c++·人工智能·神经网络·opencv·目标检测·机器学习·机器人
AI的探索之旅2 天前
97 个 OpenCV 实例(十五):几何校正,透视变换 + ECC 对齐
人工智能·opencv·计算机视觉
欧特克_Glodon3 天前
OpenCV计算机视觉开发入门与实践<二十七>:图像分割概述
c++·人工智能·opencv·计算机视觉
yyk333243 天前
OpenCV中运动目标检测
opencv·目标检测·目标跟踪
AndrewHZ3 天前
图像处理入门021 | 直方图:图像像素分布的可视化 —— cv2.calcHist 与 4 类典型分布
图像处理·opencv·直方图·直方图均衡化·cdf·灰度直方图·多通道直方图