LiteOS组件尝鲜-玩转Openexif

举报
W922 发表于 2022/03/24 10:27:06 2022/03/24
【摘要】                  Part 1                   Exif:Exchangeable image File Format。用于记录数码照片的属性信息和拍摄数据,例如厂商、分辨率、ISO、白平衡、饱和度、锐度等。然后将这些信息按照JPEG文件标准放在图像文件头部。  Exif实际上也是JPEG文件的一种,遵循JPEG标准,只是在头文件中增加了有关拍摄信息的内容...


 

                Part 1                

 

  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

 

Part 2

  1. LiteOS源码根目录下根据实际使用的开发板,拷贝tools/build/config/目录下的默认配置文件${platform}.config到根目录,并重命名为.config。
  2. 继续在LiteOS源码根目录下执行make menuconfig命令,按如下菜单路径使能C++支持和Openexif Demo。
  3. Kernel  --->
  4. [*] Enable Extend Kernel
  5. [*]     C++ Support
  6. Demos  --->
  7. Media Demo  --->

           [*] Enable Openexif Demo

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

注意

  1. 如需开启C++ thread特性,需要使能LOSCFG_LIB_CPP_EXTEND。并动态调整Task Defalut Stack Size的大小。
  2. Kernel  --->
  3. Basic Config  --->
  4. Task  --->
  5. (4096)Task Defalut Stack Size
  6. Lib  --->

    [*] Enable libc++ extend

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

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

 

Part 3

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.aopenexif_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

 

 

Part 4

 

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

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

https://gitee.com/LiteOS/LiteOS/issues

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

 

11.jpg

- end -

 

22.jpg

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。