【IMAX6U移植OpenCV】

IMAX6U移植OpenCV V1.3

  • 一 安装通用交叉编译器
    • 1.1 下载通用交叉编译器
    • 1.2 安装通用交叉编译器
    • 1.3 验证通用交叉编译器
  • 二 搭建 OpenCV 3.4.1 的编译环境
    • 2.1 下载 OpenCV 3.4.1 源码
    • 2.2 配置 OpenCV 环境
    • 2.3 编译 OpenCV 源码
  • 三 Qt 项目中加入OpenCV
    • 3.1 Qt 项目的 pro 文件OpenCV
    • 3.2 .h头文件加入以下内容,注根据所需要添加相应的头文件
  • 四 安装cmake 和cmake-gui 工具

一 安装通用交叉编译器

1.1 下载通用交叉编译器

Linaro 出品的交叉编译器
请根据个人 Ubuntu 系统的位数,选择对应版本下载即可。
在这里插入图片描述

1.2 安装通用交叉编译器

gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

1. sudo mkdir /usr/local/arm         //创建/usr/local/arm 文件夹,为下面安装到/usr/local/arm 这个文件夹做准备。
2. sudo tar xf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C /usr/local/arm/   //解压交叉编译器压缩包至/usr/local/arm 目录下
3. sudo vi /etc/profile   //在/etc/profile 下添加全局环境变量  添加交叉编译器
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

在这里插入图片描述

1.3 验证通用交叉编译器

  1. sudo apt-get install lsb-core lib32stdc++6 //要使用此编译器,还要在 Ubuntu 上安装一些库
  2. arm-linux-gnueabihf-gcc -v //查看安装的交叉编译器版本号.

二 搭建 OpenCV 3.4.1 的编译环境

安装完成交叉编译器后,才能开始搭建 OpenCV 的编译环境

2.1 下载 OpenCV 3.4.1 源码

OpenCV 官方源码
OpenCV 官方源码下载链接为 https://opencv.org/releases/ 本次选择的是 opencv-3.4.1 版本源码,

  • tar xf opencv-3.4.1.tar.gz
  • cd opencv-3.4.1/
  • ls
    在这里插入图片描述

2.2 配置 OpenCV 环境

  • mkdir build install //创建 build、 install 文件夹。 build 为构建文件夹, install 为安装文件夹
  • ls
    在这里插入图片描述
  • 安装 cmake 和 cmake-gui 工具 // 执行命令安装 sudo apt-get install cmake cmake-qt-gui cmake-curses-gui
  • cd build //进入 build 目录下,执行指令 cmake-gui,开始配置 OpenCV 的环境
  • cmake-gui
  • 指定我们源码的所在路径和构目录
    在这里插入图片描述
  • 选择 Unix Makefiles, 然后选择 Specify options for cross-compiling,再点击 Next。
    在这里插入图片描述
  • 填写交叉编译器的路径
    在这里插入图片描述
  • 下面就是您配置的信息,可以配置很多项,比如要编译哪些库等都可以在此选择编译或者不编译, 比如常见的 V4L2 都需要自己打开(V4L2 是处理摄像头类用的)。
    在这里插入图片描述
    点击 CMAKE,在 CMAKE_EXE_LINKER_FLAGS 处添加上“-lpthread -lrt -ldl”
    添加这些是指定依赖库的链接参数。
    上面的“-lxx”其中“-l”是大写字母“L”的小写字母“l”,不是数字“1”。
    在这里插入图片描述
    再在 CMAKE_INSTALL_PREFIX 处指定安装目录, 我们在上面已经新建了 install 安装目录。
    如果不指定,它会默认安装到 Ubuntu 系统目录/usr/local 下。
    再点击关闭。到这里我们已经完成配置
    在这里插入图片描述
    至此我们配置完, 现在我们需要生成 Makefile 等文件,我们先点击 Configure,再点击 Generate 就可以生成了。
    在这里插入图片描述

2.3 编译 OpenCV 源码

  1. 首先在源码目录 3rdparty/protobuf/src/google/protobuf/stubs/common.cc 这个文件下第 33 行添加#define HAVE_PTHREAD 宏定义才可以编译的过。
    具体原因是 HAVE_PTHREAD 宏定义了 pthread 库。在如下位置添加即可。
cd .. // 返回 opencv 源码顶层目录
vi 3rdparty/protobuf/src/google/protobuf/stubs/common.cc

在这里插入图片描述
2. 返回于是 build 目录下,可以看到 bulid 目录下已经准备了构建文件。我们直接输入 make 构建即可。

cd build/
make -j 16

编译完成如下图。 在这里插入图片描述
如果有编译出错,先删除 build 目录下的所有文件,按(## 2.2 配置 OpenCV 环境 )重新再来一次! cmake-gui 尽量一次配置成功。

  1. make install //把库安装创建的 install 目录下。 然后使用 ls 指令查看安装目录 install。
make install
ls ../install

安装成功和查看安装如下:
在这里插入图片描述
至此我们已经编译完成 OpenCV 了。 将当前目录下的 lib 文件夹下的内容拷贝到正点原子 I.MX6U 驱动指南里的 busybox 文件系统/usr/lib 下即可。

三 Qt 项目中加入OpenCV

3.1 Qt 项目的 pro 文件OpenCV

打开 Qt 项目的 pro 文件, 在里面添加如下内容。

INCLUDEPATH += /home/alientek/opencv/install/include
LIBS += ../../lib/libopencv_core.so \
../../lib/libopencv_highgui.so \
../../lib/libopencv_imgproc.so \
../../lib/libopencv_videoio.so \
../../lib/libopencv_imgcodecs.so

3.2 .h头文件加入以下内容,注根据所需要添加相应的头文件

#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv/cv.h>

其中/home/alientek/opencv/install/include 需要改为自己的 OpenCV 路径 ,Qt 的 pro 文件需要 在上一章节 OpenCV 安装目录下的 lib 的前两级目录下才能正常使用!


四 安装cmake 和cmake-gui 工具

sudo apt-get install cmake cmake-qt-gui cmake-curses-gui

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/364337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 使用 uni-file-picker 上传头像

此处使用 select 处理选择完文件后的逻辑&#xff0c;即将文件上传到自己的服务器。 <uni-file-picker limit"1" :del-icon"false" disable-preview :imageStyles"imageStyles"file-mediatype"image" select"upload"&g…

Debug Eigen

(参考https://eigen.tuxfamily.org/index.php?titleDeveloper%27s_Corner#Debugging_under_Visual_Studio&#xff09; 假如我们直接想要检查Eigen中的VectorXf的值&#xff0c;我们会发现无法看到内部的值&#xff0c;如图 只需要下载eigen.natvis这个文件&#xff0c; &…

【Pytorch】CNN中的Attention

目录 更大层面上的Attention在attention中&#xff0c;怎么分区channel-wise还是spatial-wise举一个Spatial-Channel Attention的例子 使用广泛的Dot-product Attentionattention机制中的query,key,value的概念解释Attention的一个例子 更大层面上的Attention 在attention中&a…

GitHub的使用操作

记得看目录哦&#xff01; 1. 创建仓库2. 下载desktop3. 把创建的库克隆到本地4. 文件拷贝到本地仓库![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7171ac6c4ca14e3b8d22717121f79c9e.png)5. 在网址后面加/compare进行比较6. 给系统添加功能 1. 创建仓库 2. 下载…

proxmox集群从7.4升级到最新的8.1

关于proxmox&#xff0c;给Zstack的公开建议 十一放假折腾服务器札记 proxmox​​​​​​​专栏上面第一篇文写的时间还是22年6月底&#xff0c;用proxmox搭建的3机集群在合肥光源束测系统后台在线工作快两年了&#xff0c;在没有UPS保护的情况下&#xff0c;经历了实验室的…

CHS_08.2.3.6_1+生产者-消费者问题

CHS_08.2.3.6_1生产者-消费者问题 问题描述问题分析思考&#xff1a;能否改变相邻P、V操作的顺序&#xff1f;知识回顾 在这个小节中 我们会学习一个经典的进程同步互斥的问题 问题描述 并且尝试用上个小节学习的p v操作 也就是信号量机制来解决这个生产者消费者问题 问题的描…

【实战系列----消息队列 数据缓存】rabbitmq 消息队列 搭建和应用

线上运行图&#xff0c;更新不算最新版&#xff0c;但可以使用修改线程等补丁功能&#xff0c;建议使用新版本。 远程服务器配置图: 这个可以更具体情况&#xff0c;因为是缓存队列理所当然 内存越大越好&#xff0c;至于核心4核以上足够使用。4核心一样跑 这里主要是需要配置服…

麒麟系统—— openKylin 安装 Nginx

麒麟系统—— openKylin 安装 Nginx 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。 二、下载 nginx三、解压与运行解压检查与编译安装编译运行 四、配置加入到服务中加入环境变量nginx 配置文件 五、常用命令 Nginx 是一款高性能的 HTTP 和反向代理服务器&#xff0c…

Android super.img解包和打包指南(含工具下载lpunpack、lpmake、lpdump)

本文所有命令均需要在linux 上执行 一、解包 1、将Android sparse image格式的super.img转成二进制文件 $ sudo apt install android-sdk-libsparse-utils $ simg2img super.img super.img.bin 2、下载工具lpunpack 和lpmake、lpdump 以及其依赖库 下载地址:https://downl…

C语言实现12种排序算法

1.冒泡排序 思路&#xff1a;比较相邻的两个数字&#xff0c;如果前一个数字大&#xff0c;那么就交换两个数字&#xff0c;直到有序。 时间复杂度&#xff1a;O(n^2)&#xff0c;稳定性&#xff1a;这是一种稳定的算法。 代码实现&#xff1a; void bubble_sort(int arr[],…

在Debian11安装Proxmox VE 7及设置GPU工作环境

我们在测试大模型&#xff0c;深度学习的过程中&#xff0c;可能遇到的情况就是不断的清空系统&#xff0c;避免老系统中安装的软件对测试系统造成影响&#xff0c;导致测试结果不准确或莫名报错。今天为小伙伴们介绍使用PVE7做成一个人工智能开发和测试的平台&#xff0c;你可…

Day40 0-1背包问题

0-1背包问题 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&#xff0c;它们各自占据不同的空间&#x…

户外没有电源和网络,但需要安装监控系统,怎么办?太阳能智能监控系统给你解决

近期有粉丝给小编求助&#xff1a;需要在没网没电的户外进行智能监控的安装&#xff0c;不知道如何解决。收到粉丝的问题&#xff0c;小编立刻联系了技术人员给出方案。针对野外、户外等场景只需使用太阳能供电模组4G摄像机视频监控EasyCVR平台智能分析网关V4的架构&#xff0c…

【2023地理设计组一等奖】基于机器学习的地下水仿真与时空分析

作品介绍 1 设计思想 1.1 作品背景 华北平原是我国最重要的粮棉产地之一,然而近年来农业的低效用水以及过度压采正逐步加剧其地下水资源的紧张性,为经济可持续发展带来重大风险。而地下水动态变化与人为干预、全球气候波动呈现出高度相关性,因此,地下水的仿真模拟对保障粮…

网络编程套接字(2)

TCP 简单的TCP网络程序服务端创建套接字 服务端绑定服务端监听服务端接收连接测试服务端处理请求客户端创建套接字客户端连接服务器客户端连接服务器单执行流的服务器客户端为什么会显示连接成功&#xff1f; 多进程版的TCP网络程序让孙子进程提供服务 多线程版的TCP网络程序 简…

力扣之2629.复合函数(reduceRight )

/*** param {Function[]} functions* return {Function}*/ var compose function(functions) {return function(x) {return functions.reduceRight((result, func) > func(result), x);} };/*** const fn compose([x > x 1, x > 2 * x])* fn(4) // 9*/ 说明&#x…

Win10的蓝牙和其他设备没有蓝牙开关选项

一、问题背景 虽然蓝牙驱动并没有问题&#xff0c;但是Win10的蓝牙和其他设备却没有显示蓝牙开关的选项。这导致笔记本电脑无法使用蓝牙连接设备。如下图所示&#xff1a; 添加蓝牙或其他设备的标题下面本来应该有一个蓝牙开关&#xff0c;但是笔记本电脑却并没有显示这样的…

k8s安装dashboard报错CrashLoopBackOff

报错信息 使用kubectl get pods -A查看集群&#xff0c;出现错误&#xff1a; kubernetes-dashboard kubernetes-dashboard-xxxxxxxxxx6-2qrst 0/1 CrashLoopBackOff 6 15m查看日志后&#xff0c;发现原因&#xff1a; panic: Get "https://10…

搭建自己的私服 maven 仓库

申明&#xff1a;本文章所使用docker-compose配置文件纯属学习运用&#xff0c;非商用如有雷同请联系本人协调处理。 一、配置docker-compose.yml文件 # 指定docker-compose的版本 version: 3 services: nexus: container_name: nexus_container image: sonatype/nex…

经典mysql实操和行专列操作

1.删除除了学号字段以外&#xff0c;其它字段都相同的冗余记录&#xff0c;只保留一条&#xff01;&#xff08;也就是要删除王五和赵六中一条重复数据只留一条&#xff09; 要求的预期效果: 原始数据创建表结构&#xff1a; CREATE TABLE tb_student (id int(16) NOT NULL,na…