• 玩转LiteOS组件:Openexif


    摘要:OpenExif是用于访问Exif格式的JPEG图像文件的面向对象的库。

    本文分享自华为云社区《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

    结语

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

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

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

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

     

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

  • 相关阅读:
    EntityFrameworkCore 试用
    学习Core 本机开发调试 (环境)
    非代码的异常
    .net 下判断中英文字符串长度
    LingQ 的Distinct使用方法
    Excel导入导出各种方式分析
    VS使用的快捷方式
    数据库事物
    web开发常用正则表达式
    特殊字符转义
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/16115749.html
Copyright © 2020-2023  润新知