嵌入式设备中OpenCV的移植
文章目录
- 1. 移植是什么意思?
- 2. 移植的一般过程
- 3. OpenCV的移植过程
- 3. 1下载源码
- 3.2 搭建编译环境
- 3.2.1 安装所需工具
- 3.2.2 生成makefile文件
- 3.3 编译OpenCV源码
- 4. Qt例程使用OpenCV
- 5. 运行例程
1. 移植是什么意思?
一般所接触的OpenCV都是直接在PC电脑上跑,比如python版或C++版的。现在呢把它放到imx6ull这个平台上去跑,所以需要修改一下。
2. 移植的一般过程
据我先前所接触的知识,移植一般是一下几个步骤:
- 下载源码
- 在现有平台上用目标平台的编译器编译源码(交叉编译)
- 得到可执行文件或一些动态库或其它东西
3. OpenCV的移植过程
3. 1下载源码
正点原子提供的是opencv-3.4.1,然后解压(在我的Ubuntu虚拟机中的~/OpenCV下)。并在同目录下创建build,install文件夹。
3.2 搭建编译环境
3.2.1 安装所需工具
安装cmake和cmake-gui,sudo apt-get install cmake cmake-qt-gui cmake-curses-gui
。
3.2.2 生成makefile文件
进入到build文件夹下面去,执行cmake-gui命令,开始配置OpenCV环境。具体配置参考正点原子的文档,然后配置完后会生成makefile。
先不要急着输入 make。首先在源码目录 opencv-3.4.1/3rdparty/protobuf/src/google/protobuf/stubs/common.cc
这个文件下添加#define HAVE_PTHREAD
宏定义才可以编译的过。具体原因是 HAVE_PTHREAD
宏定义了 pthread 库。
3.3 编译OpenCV源码
进入到build目录,输入make -j 16
开始编译。如果出现错误,先删除build目录下的所有文件,然后重新搭建编译环境。编译成功后,输入make install
将某些东西安装到install文件夹,最终如下:
4. Qt例程使用OpenCV
正x原x提供的OpenCV Qt例程。将此文件夹(opencvdemo)放到install文件夹下去。至于为什么放到此文件夹下去是因为在工程QOpenCV.pro
文件中定义了lib库的路径是在QOpenCV.pro
的../../lib
下(我修改成了../lib/xxx
)。当然你可以通过修改QOpenCV.pro
文件中LIBS的值来指定库文件的位置。
**需要注意的一点是:**上图文件中的库是动态库,也就是说把这些文件拷贝到开发板上去后也要满足这样的要求(即QOpenCV这个程序所需的动态库在此文件上一层的上一层的lib文件夹中,否则会报动态库找不到的错误)。
配置好QOpenCV.pro
文件后执行
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
然后执行qmake
生成makefile,最后再执行make编译。编译完成后在当前目录生了可执行文件QOpenCV,把它和resource文件夹拷贝到开发板中去。
5. 运行例程
因为在Ubuntu虚拟机上编译正点原子提供的OpenCV Qt例程时用了动态库,所以需要把OpenCV/install/lib下的动态库拷贝到开发板的/lib下去。然后再把例程编译生成后的QOpenCV和resource文件夹拷贝到开发板中去,执行/etc/init.d/psplash.sh
关闭原来的桌面应用系统,最后执行./QOpenCV
即可(关闭桌面程序后,可执行/opt/qt5.5.1/apps/QDesktop/QDesktop &
来重新启动。
报错说明:如果出现动态库找不到,就说明路径不对。因为前面的QOpenCV.pro
文件中定义的动态库在../lib
中,所以要保证开发板中的lib也在QOpenCV的../lib
处。所以我们就可以通过改变QOpenCV
和resource
文件夹的位置来满足动态库在QOpenCV
的../lib
下。
正x原x提供的例程在E:\Embedded\Alpha Linux\阿尔法Linux开发板光盘资料(A盘)\opencvdemo
。
嵌入式设备中OpenCV的移植相关推荐
- 嵌入式设备中支持国密算法的方法(三)——移植Openssl库的步骤说明
本篇文章是介绍国密算法在嵌入式设备中应用方法系列文章的第三篇,介绍移植openssl库到嵌入式设备中的具体方法,当然最终的目的还是使我们的设备能支持国密算法.同上一篇文章中介绍的miracl密码库相比 ...
- 嵌入式设备中支持国密算法的方法——移植Miracl库的步骤说明
上一篇文章中我们为大家介绍了嵌入式设备中支持国密算法的几种方法.本篇我们详细的介绍一下第一种方法:移植Miracl库的具体操作步骤. 第一步 获取源码 MIRACL密码库是开源软件,可以直接到官网下载 ...
- 嵌入式设备中支持国密算法的方法
如今国密系列算法的应用已不仅仅局限于金融和电信等领域,诸如车载设备,消费类电子设备等越来越多的产品开始要求有国密算法的支持.但是国密算法的开源资料和应用案例少之又少,如何快速高效的在自己的设备中加入国 ...
- 网页里如何嵌入服务器控制,在嵌入式设备中实现Web动态服务与Web控制的实现思路...
随着网络技术的不断发展,嵌入式系统将不断地和网络相结合.嵌入式Web技术是计算机领域研究的热点,其优点是开发成本低.通用性强,能运行在8位或16 位MCU环境中,其丰富的Web用户图形界面使得嵌入式设 ...
- IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解
IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解 0.前言 一.光学传感器模块: 1. 光敏传感器模块: 2. 红外避障模块 3. 循迹传感器模块 4. U型光电传感器模块 5. 红外接收模 ...
- miracl实现ecdsa_嵌入式设备中支持国密算法的方法——移植Miracl库的步骤说明
本篇我们详细的介绍一下:移植Miracl库的具体操作步骤. 第一步 获取源码 MIRACL密码库是开源软件,可以直接到官网下载,也可在csdn等论坛中获取. 第二步 利用MIRACL库函数实现SM2算 ...
- 嵌入式设备和固件中的自动漏洞检测(一):概览
原文链接:Automatic Vulnerability Detection in Embedded Devices and Firmware: Survey and Layered Taxonomi ...
- 嵌入式设备和固件中的自动漏洞检测(二):动态分析与符号执行技术
原文链接:Automatic Vulnerability Detection in Embedded Devices and Firmware: Survey and Layered Taxonomi ...
- 嵌入式设备web服务器比较
现在在嵌入式设备中所使用的web服务器主要有:boa.thttpd.mini_httpd.shttpd.lighttpd.goaheand.appweb和apache等. Boa 1.介绍 Boa诞生 ...
最新文章
- 要如何努力,才干成为非常厉害的人?!
- VS2015 解决方案 或者项目 卡 正在加载 的解决办法
- Activity的launchMode和任务栈小结
- mybatis 插入数据后返回自增id
- 2017.8.7 序列计数 思考记录
- 计算机发展初期 承载信息的媒体,兰州大学《多媒体技术基础》18秋平时作业3(含答案)...
- linux中哪个命令可以压缩部分文件,可以使用Linux解压缩命令,解压缩任意格式的压缩文件。...
- arcgis desktop 地理编码服务发布
- Windows下MySQL环境变量的配置及说明
- 2020年最值得收藏的60个AI开源工具
- 捷速pdf修改器如何在pdf中添加附件
- 前端模块化发展(CommonJs、AMD、CMD、UMD、ESM)
- ZigBee技术有哪些应用领域?
- 云渲染农场优缺点分别是什么?六点详解!
- 从k-line到决策实践:huobi api实现(一)
- Android实现NFC芯片制造商识别
- 【Python123】鸡兔同笼
- [转载]微信企业号:企业客户的移动应用入口
- 【蓝桥杯选拔赛真题07】python输出乘积 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析
- 华硕预装系统笔记本一键恢复系统