- 前言
- 一、python include lib相关的设置报错
- 二、C++11 support报错
- 尝试方法一:这个网上大量的发帖说是要 添加 -std=c++11
- 尝试方法二:在 opencv-4.x/build/CMakeLists.txt 里面添加
- 尝试方法三:修改 makefile里面的g++ flags
- 最后成功的方法
- 总结
前言
ubuntu下编译 openCV4 遇到了几个问题,记录一下:
特别提示CMake 参数一定要带上
-D OPENCV_ENABLE_NONFREE=ON 配置完参数必须要检查一下输出的信息 确认 NON-free algorithms YES
此选项的作用是使用没有版权的算法。例如 SURF SIFT
编译openCV4 需要做的准备工作可以参考下面的链接:
Jetson Nano编译安装带cuda的opencv4.x 和opencv_contrib4.x
一、python include lib相关的设置报错
‘PyObject {aka struct _object}’ has no member named ‘v’
这个主要原因是cmake 参数需要设置 python3的include lib exec 路径(具体要按照实际安装的python版本去填写)
-D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3.8
-D OPENCV_PYTHON3_VERSION=3.8
-D PYTHON3_INCLUDE_PATH=/usr/include/python3.8
-D PYTHON3_LIBRARIES=/usr/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.so
-D PYTHON3_EXECUTABLE=/usr/bin/python3.8
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include/
opencv4.x/modules/core/include/opencv2/core/cvdef.h:775:4: error: #error "OpenCV 4.x+ requires enabled C++11 support"
尝试方法一:这个网上大量的发帖说是要 添加 -std=c++11我也反复试了添加
-D CMAKE_CXX_FLAGS="-std=c++11"
但是没有问题没有得到解决
尝试方法二:在 opencv-4.x/build/CMakeLists.txt 里面添加# 设置指定的C++编译器版本是必须的,如果不设置,或者为OFF,则指定版本不可用时,会使用上一版本。 set(CMAKE_CXX_STANDARD_REQUIRED ON) # 指定为C++11 版本 set(CMAKE_CXX_STANDARD 11)
依然相同的报错
尝试方法三:修改 makefile里面的g++ flags文章链接 :添加c++11标准的支持
g++ fopenmp -o ${TARGET} &{OBJECTS} -I ${INCLUDE} ${LIBS} -std=c++11
我在我自己的 opencv-4.x/build/makefile 文件里面没有找到可以修改 g++的地方,放弃了
最后成功的方法后来偶然在一篇文章中看到可以单独设置 CUDA_NVCC_FLAGS
在 -D CMAKE_CXX_FLAGS="-std=c++11" 基础上添加
-D CUDA_NVCC_FLAGS="--compiler-options "-std=c++11""
总算是编译通过了。
总结最后的编译参数是
cmake -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.x/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=YES -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3.8 -D OPENCV_PYTHON3_VERSION=3.8 -D PYTHON3_INCLUDE_PATH=/usr/include/python3.8 -D PYTHON3_LIBRARIES=/usr/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.so -D PYTHON3_EXECUTABLE=/usr/bin/python3.8 -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include/ -D CMAKE_CXX_FLAGS="-std=c++11" -D CUDA_NVCC_FLAGS="--compiler-options "-std=c++11"" ..
make -j8 完成后
sudo make install
-- Installing: /usr/local/bin/opencv_visualisation -- Set runtime path of "/usr/local/bin/opencv_visualisation" to "/usr/local/lib:/usr/local/cuda-10.2/lib64" -- Installing: /usr/local/bin/opencv_interactive-calibration -- Set runtime path of "/usr/local/bin/opencv_interactive-calibration" to "/usr/local/lib:/usr/local/cuda-10.2/lib64" -- Installing: /usr/local/bin/opencv_version -- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib:/usr/local/cuda-10.2/lib64" -- Installing: /usr/local/bin/opencv_model_diagnostics -- Set runtime path of "/usr/local/bin/opencv_model_diagnostics" to "/usr/local/lib:/usr/local/cuda-10.2/lib64"
Jetson Nano 相关的资料
算力相关参数是 CUDA_ARCH_BIN=“5.3”
CPU是4核的ARM make -j8(减少焦急等待的时间,老板已经在问编好没有了)



