赞
踩
ubuntu下编译 openCV4
遇到了几个问题,记录一下:
特别提示CMake 参数一定要带上
-D OPENCV_ENABLE_NONFREE=ON
配置完参数必须要检查一下输出的信息
确认 NON-free algorithms YES
此选项的作用是使用没有版权的算法。例如 SURF SIFT
编译openCV4 需要做的准备工作可以参考下面的链接:
Jetson Nano编译安装带cuda的opencv4.x 和opencv_contrib4.x
‘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"
我也反复试了添加
-D CMAKE_CXX_FLAGS="-std=c++11"
但是没有问题没有得到解决
# 设置指定的C++编译器版本是必须的,如果不设置,或者为OFF,则指定版本不可用时,会使用上一版本。
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 指定为C++11 版本
set(CMAKE_CXX_STANDARD 11)
依然相同的报错
文章链接 :添加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""
总算是编译通过了。
在opencv-4.x 目录下 新建build目录,将解压出的 opencv_contrib-4.x 放在opencv-4.x 目录下,或者在编译设置里面 OPENCV_EXTRA_MODULES_PATH 值填绝对路径
最后的编译参数是
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=ON ==========================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/ ======================================================== -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(减少焦急等待的时间,老板已经在问编好没有了)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。