ubuntu 18.04 LTS交叉编译opencv 3.4.16并编译工程[全记录]

这篇具有很好参考价值的文章主要介绍了ubuntu 18.04 LTS交叉编译opencv 3.4.16并编译工程[全记录]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

零、安装OpenCV之前,安装依赖项

参考博文:
https://blog.csdn.net/qq_54199287/article/details/133780829?spm=1001.2014.3001.5506

sudo apt-get install build-essential
sudo apt-get install libopenblas-dev
sudo apt-get install git pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 处理图像所需的包
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
# 处理视频所需的包
sudo apt-get install libxvidcore-dev libx264-dev 
# 优化opencv功能
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg

如果遇到安装libjasper-dev错误,可参考博文:
https://blog.csdn.net/lyc_daniel/article/details/133439255?spm=1001.2014.3001.5501

一、下载并解压opencv 3.4.16源码

https://opencv.org/releases/
放到home路径下的Exe文件夹(专门放用户安装的软件)中,其中build是后期自建的
为了版本控制,保留了3.4.16,并增加了-gcc-arm
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux

二、安装cmake和cmake-gui

我用命令安装的,版本不是最新的,但二者的版本是匹配的。

sudo apt install cmake
sudo apt-get install cmake-gui

查看版本
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux

三、启动cmake-gui并编译opencv 3.4.16

1.启动cmake-gui对话框

sudo cmake-gui

2.在opencv源码路径下新建build文件夹(用于存放编译文件)
3.在/usr/local路径下新建opencv3.4.16-gcc-arm文件夹(用于存放编译结果)
4.对话框设置
参考博文:https://blog.csdn.net/xiaopang_love_study/article/details/121617995#t7
部分设置截图如下:
4.1设置source和build为opencv解压后的路径,之后点击configure
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
4.2选择交叉编译器
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
4.3设置编译器为gcc-arm,该编译器之前解压到了Exe文件夹中了,并不是命令安装的,但设置了gcc-arm相关的环境变量(百度搜索安装方法即可,编译器的完整名称:gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf)。
(C、C++、Target Root均来自该编译器目录,其他Target Root选择lib文件夹,而不是lib64文件夹)
其他默认。点“Finish”
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
在新的对话框中的Search框搜索输入Z和install:
Z:把搜索到的BUILD_ZLIB打勾。
install:把搜索到的安装路径改为/usr/local/opencv3.4.16-gcc-arm
(之前新建了opencv3.4.16-gcc-arm,方便后期移植到arm环境时拷贝lib文件夹)
依次点Configure、Generate。如果红色的行都消失了,说明配置成功。关闭CMake对话框。
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux

四、编译和安装OpenCV 3.4.16

1.进入opencv源文件夹内的build路径
执行

cd opencv/build    #进入配置好的编译目录
sudo make -j4      #启动4个核一起编译
sudo make install  #拷贝编译结果到/usr/local/opencv3.4.16-gcc-arm目录

若有编译错误,参考原博文https://blog.csdn.net/xiaopang_love_study/article/details/121617995#t7
或其他博文

2.设置环境变量
2.1设置/etc/ld.so.conf.d/opencv.conf

sudo gedit /etc/ld.so.conf.d/opencv.conf

在opencv.conf中添加

/usr/local/opencv3.4.16-gcc-arm/lib

如下图
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
加载操作

sudo ldconfig

2.设置/etc/bash.bashrc

sudo gedit /etc/bash.bashrc

添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/opencv3.4.16-gcc-arm/lib/pkgconfig
export PKG_CONFIG_PATH

更新环境变量

source /etc/bash.bashrc
sudo updatedb

-------------------至此,opencv被gcc-arm编译并安装完成。---------------------------

五、交叉编译opencv 3.4.16工程

1.参考博文:https://blog.csdn.net/xiaopang_love_study/article/details/121617995#t7
编写mergeImg.cpp代码和CMakeLists.txt
mergeImg.cpp

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include <iostream>
#include <stdio.h>
 
using namespace cv;
using namespace std;
 
int main(int argc, char **argv)
{
    Mat imsrc1 = imread(argv[1]);
    Mat imsrc2 = imread(argv[2]);
    Mat imsrc2_scaler;      //将imsrc2缩放到imsrc1的尺寸
    Mat imdst;              //合成的目标图像
    double alpha = 0.3;
    double gamma = 0;
    if(imsrc1.size() != imsrc2.size())
    {
        printf("resize start!\n");
        resize(imsrc2, imsrc2_scaler, imsrc1.size(), 0, 0, INTER_LINEAR);
        addWeighted(imsrc1, alpha, imsrc2_scaler, 1 - alpha, gamma, imdst);
    }
    else
    {
        addWeighted(imsrc1, alpha, imsrc2, 1 - alpha, gamma, imdst);
    }
 
    imwrite("imdst.jpg", imdst);
    return 0;
}

CMakeLists.txt

cmake_minimum_required (VERSION 3.5.1)
 
PROJECT (mergeImg)
 
set(OpenCV_DIR /usr/local/opencv3.4.16-gcc-arm/lib)
include_directories(/usr/local/opencv3.4.16-gcc-arm/include)
find_package(OpenCV REQUIRED)
 
add_executable (mergeImg "mergeImg.cpp")
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} -lpthread -ldl)

2.利用cmake-gui编译mergeImg工程,生成makefile等文件
流程与上述编译opencv类似,其中:
(1)code和binaries均为mergeImg工程路径(build是新建的,用于存储编译文件)
(2)CAMKE_FIND_ROOT_PATH默认为gcc-arm的lib文件夹/home/lyc/Exe/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/lib (之前在home文件夹内安装的)
(3)OpenCV_DIR默认为/usr/local/opencv3.4.16-gcc-arm/share/OpenCV(注意:之前我将opencv安装在了home文件夹,但cmake-gui中的OpenCV_DIR默认是/usr/local,尝试了多种方法仍无法修改,configure后仍为/usr/local,最后选择将opencv安装在/usr/local,避免了修改cmake-gui中的OpenCV_DIR)
(4)依次点击configure、generate
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
该过程在build文件夹中生成的文件如下(有些可能是make命令生成的,记不清了):
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
3.make命令行编译mergeImg工程
在命令窗口中,进入build文件夹,执行:

sudo make -j4

即可得到执行文件mergeImg
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
因交叉编译,执行文件只能在arm平台上运行,需要查看可执行文件是否符合arm框架
参考博文:https://blog.csdn.net/qq_44681788/article/details/130901649

file mergeImg

opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
或者

readelf -h mergeImg

opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
可以看出,执行文件符合ARM架构。

至此,交叉编译完毕。

六、移植编译结果
将执行文件mergeImg,两张图像angle.jpg和plane.jpg放到opencv_test_V2文件夹中,与opencv编译结果opencv3.4.16-gcc-arm文件夹(在上述/usr/local/中)一起移植:
(1)opencv_test_V2放到arm环境的用户目录下
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
(2)opencv3.4.16-gcc-arm文件夹放到arm环境/usr/local/下
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux
在arm环境中,进入opencv_test_V2,执行命令:

./mergeImg plane.jpg angle.jpg

执行文件将两张图像angle.jpg和plane.jpg进行了融合,得到运行结果imdst.jpg
opencv cuda linux 3.4.16,OpenCV,Linux系统,ubuntu,opencv,linux至此,移植完毕!文章来源地址https://www.toymoban.com/news/detail-762862.html

到了这里,关于ubuntu 18.04 LTS交叉编译opencv 3.4.16并编译工程[全记录]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [linux]Ubuntu 18.04安装arm-linux-gcc交叉编译器的两种方法

    第一种:apt安装法: Ctrl+Alt+T弹出终端,使用如下命令进行arm-linux-gcc的安装:   使用如下命令进行arm-linux-g++的安装:   如果要卸载时使用如下命令进行移除,arm-linux-gcc的卸载:   arm-linux-g++的卸载:  第二种源码安装: 目前网上搜索发现,最多人安装的是4.4.3版本的

    2024年02月05日
    浏览(40)
  • Ubuntu18.04编译OpenCV时遇到无法下载ADE的问题

    安装OpenCV过程中编译时出现下载ADE失败的问题 报错如下: 问题出现原因: github访问超时 解决方法: 编译时增加Cmake选项,将下载源更改为GitCode镜像

    2024年02月03日
    浏览(36)
  • ubuntu 18.04 LTS安装ruby on rails

    由于令人‘烦恼’的网络问题,不用代理来正确安装rails已不可能。我自己配置了一个VirtualBox的ubuntu 18.04 LTS的虚拟机,在其中设置了rails的开发环境,你可以直接在virtualbox中导入它,然后即可拥有rails环境。在百度网盘中下载它,提取码:4zp4。用户名:myubuntu, 密码:123456

    2024年01月20日
    浏览(30)
  • 关于Ubuntu 18.04 LTS环境下运行程序出现的问题

    1.运行程序时出现以下情况 2.检查版本 ​ 发现Ubuntu18.04下的glibc版本最高为2.27,而现程序所使用的是glibc2.34,所以没办法运行, 3.解决办法 安装glibc2.34库, ①下载 因为下载太慢了,可以从这下载好,拷贝到设备 ​②选择解压路径,解压源码包:使用tar命令解压下载的glibc源

    2024年02月15日
    浏览(31)
  • Ubuntu系统升级16.04升级18.04

      作为Linux发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从Linux初学者到实验室用计算机/服务器都适合使用的发行版,目前官网最新版本是22.04。Ubuntu16.04是2016年4月发行的版本,于2019年4月停止更新维护。很多软件支持的Ubuntu最早版本也是18.04,所以考虑对现有

    2024年01月20日
    浏览(42)
  • Ubuntu安装腾讯会议——Ubuntu16.04/18.04/20.04/22.04

    通过以下教程可以快速的安装腾讯会议,本教程适用于Ubuntu16.04/18.04/20.04/22.04 进入腾讯会议下载官网下载腾讯会议Linux客户端 选择x86_64格式安装包下载 双击deb文件,点击install进行安装 安装成功,可以成功运行

    2024年02月12日
    浏览(58)
  • Ubuntu官方安装微信——Ubuntu16.04/18.04/20.04/22.04

    通过以下教程可以快速的安装官方版微信,本教程适用于Ubuntu16.04/18.04/20.04/22.04 进入微信下载官网下载微信Linux客户端 点击64位下载即可,如果不能下载,使用终端如下命令 双击deb文件,点击install进行安装 安装成功,可以在菜单中点击运行

    2024年02月08日
    浏览(36)
  • Ubuntu18.04LTS离线安装ROS Melodic(解决rosdep init与rosdep update问题)

    因为公司调试电脑无法连接互联网,所以安装 ROS 很让人头疼。但安装 ROS 无非就是安装一些 deb 包与其对应的依赖,既然这样只要下载好需要的 deb 包,再离线安装就可以。在联网电脑上使用 apt install 安装 ROS 时候,会在 /var/cache/apt/archives/ 下保存下载的安装包和依赖包,但如

    2024年02月09日
    浏览(28)
  • Ubuntu16.04升级到18.04--检查更新时出现问题--解决方法

    一开始装Ubuntu时装的是16.04,后来装cuda时,发现核是4.15的,需要升级到18.04,于是输入 sudo do-release-upgrade 更新时,发现错误: google后发现帖子: https://askubuntu.com/questions/1127896/failed-upgrade-from-17-10-to-18-04-no-module-named-distupgrade-distupgradever 想到先前曾经装过python3.7,代替了原装的

    2024年02月01日
    浏览(32)
  • Ubuntu18.04安装编译ffmpeg库

    Download FFmpeg 在cd到ffmpeg的文件夹下,执行以下命令,配置安装路径: 安装: 修改 /etc/profile文件: 最后一行添加路径: 保存后source: 修改 /etc/ld.so.conf: 添加: 执行:

    2024年02月11日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包