玩转 LiteOS 组件:Openexif
本文分享自华为云社区《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。
使能 Openexif Demo 后,LiteOS 会去下载 Openexif 源码,并打入 patch。
注意:
如需开启 C++ thread 特性,需要使能 LOSCFG_LIB_CPP_EXTEND。并动态调整 Task Defalut Stack Size 的大小。
使能 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,可根据实际自行修改。
3.使能 Openexif Demo 后,在 LiteOS 源码根目录下执行 make clean; make
-j 命令编译 LiteOS 工程,编译成功后会在 out/${platform}/lib 路径下生成 openexif.a 和 openexif_demo.a 文件,系统镜像文件为 Huawei_LiteOS.bin。
注意: 选择不同开发板 out 路径会有不同。
4.烧录系统镜像文件到开发板中可以看到如下运行结果。
可以看到 Openexif Demo 会去读取图片文件的元数据,并打印出来。
其他更多关于 exif 的信息请参考Exif。
结语
未来我们还会持续新增更多组件、开发板、架构、特性等。
感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步: https://gitee.com/LiteOS/LiteOS/issues
更多学习内容,请关注IoT物联网社区
添加华为云 IoT 小助手微信号(hwc-iot),回复“阅读”获取更多资讯
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/f76586f4223f22d9d5da543f9】。文章转载请联系作者。
评论