You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04编译OpenCV3.4.6遇SolvePnPMethod未定义错误求助

解决方案

错误原因

编译错误源于opencv_contrib的3.4分支代码与OpenCV 3.4.6版本不兼容:SolvePnPMethod类型是OpenCV 4.x版本才引入的,但你使用的OpenCV 3.4.6中并无该类型,而当前checkout的opencv_contrib 3.4分支的aruco模块已引入该仅在4.x存在的类型,导致编译冲突。

解决步骤

  1. 切换opencv_contrib到与OpenCV 3.4.6完全匹配的标签版本
    进入opencv_contrib目录,执行:
    git checkout 3.4.6
    
  2. 重新编译流程
    • 清空旧build目录:
      rm -rf build && mkdir build && cd build
      
    • 重新执行原cmake命令:
      cmake -D CMAKE_INSTALL_PREFIX=/usr/local \
       -D CMAKE_BUILD_TYPE=Release \
       -D OPENCV_GENERATE_PKGCONFIG=ON \
       -D ENABLE_CXX11=1  \
       -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
       -D OPENCV_ENABLE_NONFREE=True \
       -D INSTALL_C_EXAMPLES=ON \
       -D WITH_CUDA=ON \
       -D WITH_TBB=ON \
       -D ENABLE_FAST_MATH=1 \
       -D WITH_OPENMP=ON \
       -D WITH_CUFFT=ON \
       -D WITH_CUBLAS=ON \
       -D BUILD_opencv_cudacodec=OFF \
       -D CUDA_nppicom_LIBRARY=stdc++ \
       -DCUDA_ARCH_NAME=Manual \
       -DCUDA_ARCH_BIN="86" ..
      
    • 重新启动编译:
      make -j8
      

备选临时修复(不推荐)

若暂时无法切换标签,可手动修改aruco头文件适配:
打开/home/lightwish/Downloads/opencv-3.4.6/opencv_contrib/modules/aruco/include/opencv2/aruco.hpp:

  • 第263行:将SolvePnPMethod替换为int
  • 第266行:保留SOLVEPNP_ITERATIVE(它在OpenCV 3.4中是int类型宏定义)

此方法可能引发其他潜在兼容问题,优先推荐版本匹配方案。

内容的提问来源于stack exchange,提问作者Oliver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 13:52:47