4

玩转LiteOS组件:Openexif

 2 years ago
source link: https://juejin.cn/post/7084057654103900191
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

玩转LiteOS组件:Openexif

2022年04月08日 02:41 ·  阅读 7

本文分享自华为云社区《LiteOS组件尝鲜-玩转Openexif》,作者: W922 。

Exif:Exchangeable image File Format。用于记录数码照片的属性信息和拍摄数据,例如厂商、分辨率、ISO、白平衡、饱和度、锐度等。然后将这些信息按照JPEG文件标准放在图像文件头部。

Exif实际上也是JPEG文件的一种,遵循JPEG标准,只是在头文件中增加了有关拍摄信息的内容和索引图。通俗来说Exif信息就是由数码相机在拍摄过程中采集一系列信息镶嵌在JPEG/TIFF文件内的一组参数。

OpenExif是用于访问Exif格式的JPEG图像文件的面向对象的库。该工具包允许在Exif文件中创建,读取和修改元数据,详情请参考Openexif

LiteOS中提供对C++的支持,并提供Openexif Demo来演示如何使用Openexif。

目前暂时只支持以下开发板运行Openexif Demo:STM32F769

使能Openexif Demo

在LiteOS源码根目录下根据实际使用的开发板,拷贝tools/build/config/目录下的默认配置文件${platform}.config到根目录,并重命名为.config。 继续在LiteOS源码根目录下执行make menuconfig命令,按如下菜单路径使能C++支持和Openexif Demo。

Kernel  --->
[*] Enable Extend Kernel
[*]     C++ Support

Demos  --->
Media Demo  --->

 [*] Enable Openexif Demo
复制代码

使能Openexif Demo后,LiteOS会去下载Openexif源码,并打入patch。

注意

如需开启C++ thread特性,需要使能LOSCFG_LIB_CPP_EXTEND。并动态调整Task Defalut Stack Size的大小。

Kernel  --->
Basic Config  --->
Task  --->
(4096)Task Defalut Stack Size
Lib  --->

[*] Enable libc++ extend
复制代码

使能LOSCFG_LIB_CPP_EXTEND后,LiteOS会去下载libstdc++源码。

保存退出后,LiteOS会从github上自动下载Openexif源代码,并从gitee上下载适配于LiteOS系统的patch包,并打入patch。 详细流程在components/download.sh文件中。

编译运行Openexif Demo

1.需要一张SD卡,并在SD卡中放入一张测试图片。

注意: 由于嵌入式设备内存有限,文件过大可能导致打开失败,大小限制在100kb以下即可。

2.修改demos/media/openexif/openexif_demo.cpp文件中DEMO_FILENAME为

放入SD卡的图片文件名。本Demo所用文件名为/fatfs/test.jpg,可根据实际自行修改。

#define DEMO_FILENAME               "/fatfs/test.jpg"
复制代码

3.使能Openexif Demo后,在LiteOS源码根目录下执行make clean; make

-j命令编译LiteOS工程,编译成功后会在out/${platform}/lib路径下生成openexif.a和openexif_demo.a文件,系统镜像文件为Huawei_LiteOS.bin。

注意: 选择不同开发板out路径会有不同。

4.烧录系统镜像文件到开发板中可以看到如下运行结果。

********Hello Huawei LiteOS********

 

LiteOS Kernel Version : 5.0.0

build data : Apr 20 2021 17:05:27

 

osAppInit

cpu 0 entering scheduler

app init!

Hello, welcome to liteos demo!

Openexif demo task start to run.

file system mount success

"Exif" entries:

IFD: 0  Idx: 0

Tag# Type Count Value

282 5 1 72

283 5 1 72

296 3 1 2

531 3 1 1

34665 4 1 90

IFD: 0  Idx: 0

IFD: 34665  Idx: 0

Tag# Type Count Value

36864 7 4 [48,50,49,48]

37121 7 4 [1,2,3,0]

40960 7 4 [48,49,48,48]

40961 3 1 1

40962 4 1 0

40963 4 1 0

Openexif demo task finished.

 

Huawei LiteOS #
复制代码

可以看到Openexif Demo会去读取图片文件的元数据,并打印出来。

其他更多关于exif的信息请参考Exif

未来我们还会持续新增更多组件、开发板、架构、特性等。

感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:

gitee.com/LiteOS/Lite…

为了更容易找到“LiteOS”代码仓,建议访问gitee.com/LiteOS/Lite… Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。

11.jpg

更多学习内容,请关注 IoT物联网社区

添加华为云IoT小助手微信号(hwc-iot),回复“阅读”获取更多资讯

点击关注,第一时间了解华为云新鲜技术~

文章被收录于专栏:
cover
程序员之家
技术资讯分享,欢迎投稿、交流~
安装掘金浏览器插件
多内容聚合浏览、多引擎快捷搜索、多工具便捷提效、多模式随心畅享,你想要的,这里都有!
前往安装

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK