嵌入式设备中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诞生 ...
最新文章
- php变动参数,[小记]PHP方法的参数可变/不定
- pyhon字典后跟中括号
- boost::mpl模块实现max_element相关的测试程序
- 游戏开发者需要注意的4个内存使用问题
- 程序员真的是吃青春饭的吗?(献给即将进入职场的程序员们)
- php类的实例化方法,php中类的定义和实例化方法
- JavaScript学习(三十三)—事件对象常用的属性和方法
- 格子染色问题 java_《Mathematical Olympiad——组合数学》——染色问题
- 来自一个用户的体验-Alpha项目测试
- 利用Swipejs轻松实现手机上的图片手势切换
- c语言 move函数,什么是C语言函数
- select用法详解
- 在 Word 2013 中编写公式并标号
- 看了这个你也可以做SYSLINUX启动光盘
- c语言编程如何进行n次方运算,c语言n次方怎么输入?_后端开发
- 自动整理html书签,技巧:使用 Excel 快速整理重复书签丨Matrix 精选
- 计算机防火墙服务不能启动不了,Windows防火墙不能启动 服务也不能启动,怎么回事?...
- 保利威视后台编辑FLASH播放器
- 睁眼、耸肩、觉醒:人形机器人的吊诡与最终幻想
- java cookie能存到服务器_Cookie技术用于将会话过程中的数据保存到( )中,从而使浏览器和服务器可以更好地进行数据交互。(5.0分)_学小易找答案...
热门文章
- 华为OD机试 - 九宫格按键输入(Python) | 机试算法备考思路
- Apipost 上手指南
- CAD怎么切换角度标注对象?CAD切换角标操作技巧
- 全网最细最全OLAP之clickhouse笔记|clickhouse文档|clickhouse揭秘文档(三)--clickhouse单机安装和clickhouse集群安装
- 微信公众号的二次开发(一 订阅号没有获取网页授权的解决方法)
- 一招教你使用微信隐藏表情!
- jsp:include和%@include file=%有什么区别
- 使用JLINK仿真器调试树莓派4
- web前端技术社区分享
- 计算机工程博士参军,Gatech计算机工程博士专业排名最全信息详细分析