写点什么

玩转 LiteOS 组件:Openexif

  • 2022 年 4 月 08 日
  • 本文字数:1576 字

    阅读完需:约 5 分钟

本文分享自华为云社区《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 SizeLib  --->    [*] 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.0build data : Apr 20 2021 17:05:27
**********************************osAppInitcpu 0 entering schedulerapp init!Hello, welcome to liteos demo!Openexif demo task start to run.file system mount success"Exif" entries:IFD: 0 Idx: 0Tag# Type Count Value282 5 1 72283 5 1 72296 3 1 2531 3 1 134665 4 1 90IFD: 0 Idx: 0IFD: 34665 Idx: 0Tag# Type Count Value36864 7 4 [48,50,49,48]37121 7 4 [1,2,3,0]40960 7 4 [48,49,48,48]40961 3 1 140962 4 1 040963 4 1 0Openexif demo task finished.
Huawei LiteOS #
复制代码

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


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

结语

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


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

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

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


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

发布于: 刚刚阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
玩转LiteOS组件:Openexif_LiteOS_华为云开发者社区_InfoQ写作平台