Juega con los componentes de LiteOS: Openexif

Este artículo se comparte desde HUAWEI CLOUD Community " LiteOS Component Early Access - Playing with Openexif ", autor: W922.

Información básica

Exif: formato de archivo de imagen intercambiable. Se utiliza para registrar la información de los atributos y los datos de disparo de las fotos digitales, como el fabricante, la resolución, el ISO, el balance de blancos, la saturación, la nitidez, etc. Luego coloque esta información en el encabezado del archivo de imagen de acuerdo con el estándar de archivo JPEG.

Exif es en realidad un tipo de archivo JPEG, que sigue el estándar JPEG, pero agrega contenido e imágenes de índice sobre la información de disparo en el archivo de encabezado. En términos sencillos, la información Exif es un conjunto de parámetros incrustados en un archivo JPEG/TIFF por una serie de información recopilada por una cámara digital durante el proceso de disparo.

OpenExif es una biblioteca orientada a objetos para acceder a archivos de imagen JPEG en formato Exif. Este kit de herramientas permite crear, leer y modificar metadatos en archivos Exif, consulte Openexif para obtener más información .

Se proporciona soporte para C++ en LiteOS, y se proporciona Openexif Demo para demostrar cómo usar Openexif.

Actualmente, solo las siguientes placas de desarrollo son compatibles para ejecutar Openexif Demo:

  • STM32F769

Habilitar demostración de Openexif

En el directorio raíz del código fuente de LiteOS, copie el archivo de configuración predeterminado ${platform}.config en el directorio tools/build/config/ al directorio raíz y cámbiele el nombre a .config de acuerdo con la placa de desarrollo real.

Continúe ejecutando el comando make menuconfig en el directorio raíz del código fuente de LiteOS y habilite la compatibilidad con C++ y la demostración de Openexif de acuerdo con la siguiente ruta del menú.

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

Demos  --->
    Media Demo  --->
           [*] Enable Openexif Demo

Después de habilitar la demostración de Openexif, LiteOS descargará el código fuente de Openexif e ingresará el parche.

Darse cuenta:

Para habilitar la función de subprocesos de C++, se debe habilitar LOSCFG_LIB_CPP_EXTEND. Y ajuste dinámicamente el tamaño del Tamaño de pila predeterminado de la tarea.

Kernel  --->
    Basic Config  --->
        Task  --->
            (4096)Task Defalut Stack Size
Lib  --->
    [*] Enable libc++ extend

Después de habilitar LOSCFG_LIB_CPP_EXTEND, LiteOS descargará el código fuente de libstdc++.

Después de guardar y salir, LiteOS descargará automáticamente el código fuente de Openexif de github, descargará el paquete de parches adaptado al sistema LiteOS de gitee e ingresará el parche. El proceso detallado se encuentra en el archivo components/download.sh.

Compilar y ejecutar Openexif Demo

1. Se requiere una tarjeta SD y se coloca una imagen de prueba en la tarjeta SD.

Nota:  Debido a la memoria limitada del dispositivo integrado, si el archivo es demasiado grande, es posible que no se abra y el tamaño se limite a menos de 100 kb.

2. Modifique DEMO_FILENAME en el archivo demos/media/openexif/openexif_demo.cpp para

El nombre de archivo de la imagen colocada en la tarjeta SD. El nombre de archivo utilizado en esta demostración es /fatfs/test.jpg, que se puede modificar según la situación real.

#define DEMO_FILENAME               "/fatfs/test.jpg"

3. Después de habilitar Openexif Demo, ejecute make clean, make en el directorio raíz del código fuente de LiteOS

El comando -j compila el proyecto LiteOS. Después de una compilación exitosa, los archivos openexif.a y openexif_demo.a se generan en la ruta out/${platform}/lib, y el archivo de imagen del sistema es Huawei_LiteOS.bin.

Nota:  La ruta de salida de las diferentes placas de desarrollo será diferente.

4. Grabe el archivo de imagen del sistema en la placa de desarrollo y podrá ver los siguientes resultados.

********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 # 

Puede ver que Openexif Demo leerá los metadatos del archivo de imagen y lo imprimirá.

Para obtener más información sobre exif, consulte Exif .

Epílogo

En el futuro, continuaremos agregando más componentes, placas de desarrollo, arquitecturas, funciones, etc.

Gracias por leer, si tiene alguna pregunta o sugerencia, puede dejarnos un mensaje, avancemos juntos:  https://gitee.com/LiteOS/LiteOS/issues

Para obtener más contenido de aprendizaje, preste atención a la comunidad IoT Internet of Things

Agregue la cuenta de WeChat del Asistente de IoT de HUAWEI CLOUD (hwc-iot), responda "Leer" para obtener más información

Haga clic en Seguir para conocer las nuevas tecnologías de HUAWEI CLOUD por primera vez~

Supongo que te gusta

Origin blog.csdn.net/devcloud/article/details/124040901
Recomendado
Clasificación