IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV在Ubuntu16.04环境下编译安装PC和arm版本 -> 正文阅读

[人工智能]OpenCV在Ubuntu16.04环境下编译安装PC和arm版本

在PC端和32位arm上安装OpenCV走了很多弯路,查了很多博主的资料,同时也记录下来整个过程,希望可以有帮助!!!
64位的arm上编译安装,仅供参考,手上还没有主板,没有尝试过。

文件准备

**

opencv-3.4.10.zip
opencv_contrib-3.4.10.zip

源码可以通过gitee快速下载方法


  git clone -b 3.4.10 https://gitee.com/mirrors/opencv.git
  git clone -b 3.4.10 https://gitee.com/mirrors/opencv_contrib.git

其他OpenCV版本源码也可以通过gitee快速下载,只需要把-b 后边的版本号更换一下即可。
下载解压完成后,检查是否为同一个版本。

依赖库安装

先安装以下依赖包


 sudo apt-get install build-essential
 sudo apt-get install cmake git libgtk2.0-dev pkg-config     libavcodec-dev libavformat-dev libswscale-dev
 sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
 sudo apt-get install build-essential qt5-default ccache libv4l-dev libavresample-dev  libgphoto2-dev libopenblas-base libopenblas-dev doxygen  openjdk-8-jdk pylint libvtk6-dev
 sudo apt-get install pkg-config

编译安装,采用cmake指令:

PC版本,安装完后,得到64位的库文件,在ubuntu的qt下使用openCV库。

(1)解压下载好的包,并将opencv_contrib文件夹拷贝到OpenCV目录下,,同时在该目录下新建一个文件夹build:

  cp -r opencv_contrib opencv #复制opencv_contrib到opencv目录下
 cd opencv
 mkdir build                              #新建文件夹build

(2)现在进入到opencv目录下,查看文件结构:


 #cd opencv
 #ls

3rdparty  cmake            data     LICENSE               platforms
apps      CMakeLists.txt   doc      modules               README.md
build     CONTRIBUTING.md       include  opencv_contrib  
samples

(3)安装opencv3.4.10前,下载一些必要的文件

首先下载ippicv(https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180723/ippicv), face_landmark_model.dat (https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat),这两个文件可以放置在ubuntu的任意一个文件夹下,然后修改相应的配置文件。

例如,将二者放在Downloads文件夹下,
首先修改ippicv的

$ gedit /home/usrname/opencv_path/opencv/3rdparty/ippicv/ippicv.cmake 
#记得usrname换成自己的用户名,opencv_path 换成自己opencv文件夹的路径
       将ippicv.cmake文件下的#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"替换为本地路径

"file:///home/usrname/Downloads/"
#file后面的路径换成对应ippicv下载后保存的路径

$ gedit /home/usrname/tool/opencv-3.4.10/opencv_contrib-3.4.10/modules/face/CMakeLists.txt
#usrname 换成自己的用户名, <tool/opencv-3.4.0>换成自己opencv源码对应的文件夹
将CMakeLists.txt文件的第19行修改为本地路径,即将原来的网址#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"
修改为下载的文件保存的路径
"file:///home/usrname/Downloads/"

usrname记得替换为自己的用户名,路径记得替换为自己文件对应的路径

其次下载标有红色框的文件,

已下载。
在这里插入图片描述
从网址下载的时候,可以存为txt文档,然后修改为图中名字,拷贝到…/opencv/opencv_contrib/modules/xfeatures2d/src$ ,
在这里插入图片描述

网址如下:
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i”

“https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i”
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i”
如果下载不了,可以采取些方法。

最后修改一下opencv2的包含路径,请用绝对路径,否则会出错。

主要再两个地方
1)

cd 
~/..../opencv/modules/stitching/include/opencv2/stitching/detail$ 
gedit matchers.hpp


#ifdef HAVE_OPENCV_XFEATURES2D
#include **"/home/petertang/Downloads/opencv/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp"**
**(这里用绝对地址)**
#endif

 cd /home/......./opencv/modules/stitching
 gedit CMakeList.txt

//在第一行添加

 INCLUDE_DIRECTORIES("/home/petertang/Downloads/opencv/opencv_contrib/modules/xfeatures2d/include")**

//**(这里用绝对地址)**,地址根据自己的文件位置,修改。
//括号一定要的,不能半个括号。。

在这里插入图片描述

(3)进入build目录,并且执行cmake生成makefile文件:
cd build

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/files/opencv/opencv_contrib/modules/ ENABLE_PRECOMPILED_HEADERS=OFF-D BUILD_EXAMPLES=ON -D CMAKE_CXX_FLAGS="-std=c++11" **.. (这里是空格两个点)//**

此外-D CMAKE_CXX_FLAGS="-std=c++11" 这一句尤其重要,一定要加,否则会报C++11 的错 !
注意:OPENCV_EXTRA_MODULES_PATH就是你 opencv_contrib下面的modules目录,请按照自己的实际目录修改地址。还有后面的两点不可省略!!

CMAKE_INSTALL_PREFIX=/usr/local 是安装目录,请按照自己的实际目录修改地址。

接下来就是漫长的等待了…

生成完毕提示:

--   Install path:                  /usr/local
--   cvconfig.h is in:              /home/files/opencv/build
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/files/opencv/build

(4)在cmake成功之后,就可以在build文件下make了:

sudo make -j2   	#2线程编译 ,根据自己的机器情况选择,不加-j2也可
sudo make install

接下来就是更漫长的等待了…具体时间因人而异,如果看到下图,说明成功了,再make install就ok了!
在这里插入图片描述

(5)链接库共享
编译安装完毕之后,为了让你的链接库被系统共享,让编译器发现,需要执行管理命令ldconfig:

sudo ldconfig -v  

然后,可以在qt的工程中配置即可。
在这里插入图片描述
按上述步骤,先下载,再CMake,没出现错误,顺利安装完毕。

32位 arm下的交叉编译安装

同样也是该下载下载,该修改修改。
不同的是安装交叉编译器、修改arm处理器、创建build的目录不一样、CMake的时候要做一些改动。
(1)安装交叉编译器
Cross compilation tools for ARM: gcc, libstc++, etc. Depending on target platform you need to choose gnueabi or gnueabihf tools. Install command for gnueabi:

 sudo apt-get install gcc-arm-linux-gnueabi
 sudo apt-get install g++-arm-linux-gnueabi
 # arm-linux-gnueabi-gcc -v 查看版本
 #   arm-linux-gnueabi-g++ -v

(2)修改配置文件


 cd /home/petertang/Downloads/opencv/platforms/linux
 gedit arm-gnueabi.toolchain.cmake//添加以下三句
 set(CMAKE_SYSTEM_PROCESSOR arm) //第一行
 set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc)//第三行
 set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++)//第四行

(3)创建build和安装目录

**注意,build一定要创建在 /home/petertang/Downloads/opencv/platforms/linux/下
**
(4)编译安装
cd …/opencv/platforms/linux/build$
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/petertang/Downloads/opencv/arm_opencv -D OPENCV_EXTRA_MODULES_PATH=/home/petertang/Downloads/opencv/opencv_contrib/modules/ -D ENABLE_PRECOMPILED_HEADERS=OFF-D BUILD_EXAMPLES=ON -D CMAKE_CXX_FLAGS="-std=c++11" -DCMAKE_TOOLCHAIN_FILE=…/arm-gnueabi.toolchain.cmake …/…/…

注意:-DCMAKE_TOOLCHAIN_FILE=…/arm-gnueabi.toolchain.cmake …/…/… 这里是(2)中的/home/petertang/Downloads/opencv/platforms/linux/arm-gnueabi.toolchain.cmake//

…/…/…(这里也要有)
CMake后,参考PC端安装过程。
然后可以在qt下使用了。
可以把lib文件移植到arm下。

64位 arm下的交叉编译安装

(1).Linux x86下安装ARM架构下的编译器


  sudo apt-get install g++-aarch64-linux-gnu
  sudo apt-get install gcc-aarch64-linux-gnu

下载后在终端输入以下指令查看编译器版本

 aarch64-linux-gnu-g++ -v`
 aarch64-linux-gnu-gcc -v

(2)opencv交叉编译

opencv的交叉编译工具链在…/opencv3.2.0/platforms/linux 路径下,linux文件夹下是一些.cmake文件,对应不同的移植对象,所以选择aarch64-gnu.toolchain.cmake 工具链,在进行编译前,需要修改cmake文件,修改platform/linux/aarch64-gnu.toolchain.cmake,改为如下:

  set(CMAKE_SYSTEM_PROCESSOR aarch64)
  set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
  set(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc)
 set(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++)
 set(GNU_MACHINE "aarch64-linux-gnu" CACHE STRING "GNU compiler
    triple")
  include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")
 // 3. set(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc)
 //4. set(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++)
 //3&&4这两句是后加的

(3)接下来执行交叉编译指令:

可参考32位arm的写法,修改toolchain文件,指定编译文件make install后保存路径
编译结束后,可查看include、lib等文件。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 18:49:57  更:2021-11-16 18:50:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:28:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码