opencv
1. 源码编译
-
下载源码
下载opencv与opencv-contrib的源码包,注意版本对应
opencv:https://github.com/opencv/opencv/releases opencv-contrib:https://github.com/opencv/opencv_contrib/releases
-
安装依赖
# to support gtk2: sudo apt-get install libgtk2.0-dev # to support gtk3: sudo apt-get install libgtk-3-dev
可选依赖
sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libwebp-dev sudo apt-get install libopenexr-dev
-
编译安装
mkdir build && cd build && cmake .. # 编译选项 make -j4 sudo make install
-
验证
pkg-config --modversion opencv4
1.1. Jetson编译最新版本
由于Jetson自带的是4.1.1的老版本OpenCV(基于Ubuntu18.04),且apt包未提供CUDA支持。所以需要自己编译OpenCV,这里是基于4.5.1版本。
mv opencv_contrib opencv
cd opencv && madir build && cd build
以下参数是针对jetson的优化
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
-D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN=5.3 \
-D CUDA_ARCH_PTX="" \
-D WITH_CUDNN=ON \
-D WITH_CUBLAS=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D OPENCV_DNN_CUDA=ON \
-D ENABLE_NEON=ON \
-D WITH_QT=OFF \
-D WITH_OPENMP=ON \
-D WITH_OPENGL=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
# -D WITH_TBB=ON \
# -D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D WITH_GTK_2_X=ON ..
编译时,注意添加 -j4
可以有效提升编译速度。
sudo make install -j4
1.2. 编译报错
1.2.1. xfeatures2d缺少boostdesc_lbgm.i等文件
cmake会自动下载配置文件,但由于网络问题,导致数据下载失败。
.cache
└───xfeatures2d
├───boostdesc
│ 0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i
│ 0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i
│ 202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i
│ 232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i
│ 324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i
│ 98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i
│ e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i
└───vgg
151805e03568c9f490a5e3a872777b75-vgg_generated_120.i
7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i
7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i
e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i
可以从以下地址: github: opencv_contrib_files 下载,并解压到 build/.cache/xfeatures2d/
代替原有的boostdesc和vgg两个文件夹。
1.2.2. face_landmark_model.dat等文件缺失
csdn: 一次性解决opencv源码安装文件下载问题:ippicv_2017u3_lnx, face_landmark_model.dat, tiny-dnn
-
face_landmark_model.dat
下载地址:github: opencv_3rdparty-face_landmark_model.dat
gitee备份: gitee: opencv_3rdparty-face_landmark_model.dat
配置:
opencv_contrib/modules/face/CMakeLists.txt
,第19行,把网址改成下载路径"file://${path_dir}"
(注意,不用指定文件,dir即可)。 -
ippicv_2017u3_lnx_intel64_general_20170822.tgz
下载地址:github: opencv_3rdparty-ippcv
另提供gitee的备份: gitee: opencv_3rdparty-ippcv
配置:打开
opencv/3rdparty/ippicv/ippicv.cmake
,第47行"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
,改成:"file://${path}"
-
tiny-dnn-1.0.0a3.tar.gz
下载地址:github: opencv_3rdparty-tinydnn
gitee备份: gitee: opencv_3rdparty-tinydnn
配置:
${opencv_contrib_folder}/modules/dnn_modern/CMakeLists.txt
,第23行,修改方法和前面一样
1.3. 编译opencv-python
安装依赖:
sudo apt-get install python3-dev python3-numpy
You should see these lines in your CMake output (they mean that Python is properly found):
-- Python 2:
-- Interpreter: /usr/bin/python2.7 (ver 2.7.6)
-- Libraries: /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6)
-- numpy: /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.8.2)
-- packages path: lib/python2.7/dist-packages
--
-- Python 3:
-- Interpreter: /usr/bin/python3.4 (ver 3.4.3)
-- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3)
-- numpy: /usr/lib/python3/dist-packages/numpy/core/include (ver 1.8.2)
-- packages path: lib/python3.4/dist-packages
-- Python (for build): /usr/bin/python2.7
能够正常找到python环境,但默认选择了 python2.7
匹配?解决方法如下:
PYTHON_DEFAULT_EXECUTABLE=$(which python3)
决定了生成 cv2.so
对应的python版本。如果你需要自定义numpy和site_package(例如venv环境下的依赖包),可以使用以下选项
-D INSTALL_PYTHON_EXAMPLES=ON \
-D PYTHON_EXECUTABLE=/home/user/anaconda3/bin/python3.7m \
-D PYTHON_INCLUDE_DIR=/home/user/anaconda3/include/python3.7m \
-D PYTHON_LIBRARY=/home/user/anaconda3/lib/libpython3.7m.so \
-D PYTHON_PACKAGES_PATH=/home/user/anaconda3/lib/python3.7/site-packes
-D PYTHON_NUMPY_INCLUDE_DIR=/home/user/anaconda3/lib/site-packages/numpy/core/include \
-D PYTHON3_PACKAGES_PATH=/home/user/anaconda3/lib/python3.7/site-packages
注意:如果编译时使用了编译选项 -D BUILD_opencv_world=NO
那么完成后在 build/lib
文件夹下也找不到cv2.so的。
测试
python3 -c "import cv2; print(cv2.__version__)"
2. 编译cv代码
g++ main.cpp `pkg-config opencv4 --cflags --libs`
原文地址:https://www.cnblogs.com/brt2/p/14437560.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 全面分析redis持久化机制
- 【奇技淫巧】-- 接雨水
- 【奇技淫巧】-- 最长连续序列
- 【redis】跟我一起动手玩玩redis主从复制和哨兵模式
- 【C++】八大排序算法 :GIF + 亲测代码 +专项练习平台
- 【C++】勉强能看的线程池详解
- 国密SSL协议之Java编程
- 7. Jackson用树模型处理JSON是必备技能,不信你看
- epoll,求知者离我近点
- SOCKET网络编程 (通俗易懂入门篇)
- 进程 · 全家桶
- Posix线程 它们那一大家子事儿,要觉得好你就收藏进被窝慢慢看(2)
- Posix线程 它们那一大家子事儿,要觉得好你就收藏进被窝里慢慢看 (1)
- 种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林
- 【Linux内核】进程管理