开源相机管理库Aravis例程学习(七)——chunk-parser
- 简介
- 例程代码
- 函数说明
- arv_camera_create_chunk_parser
- arv_camera_set_chunks
- arv_chunk_parser_get_integer_value
简介
本文针对官方例程中的:05-chunk-parser做简单的讲解。并介绍其中调用的arv_camera_create_chunk_parser
,arv_camera_set_chunks
,arv_chunk_parser_get_integer_value
函数。
aravis版本:0.8.31
操作系统:ubuntu-20.04
gcc版本:9.4.0
例程代码
这段代码使用Aravis的API,操作相机捕获图像并获取流数据中附加的块信息(例程中启用的块数据为图像的长和宽),主要操作步骤如下:
- 连接相机
- 设置启用的块数据
- 图像采集
- 打印相关数据
- 释放资源
/* SPDX-License-Identifier:Unlicense */
/* Aravis header */
#include <arv.h>
/* Standard headers */
#include <stdio.h>int main (int argc, char **argv)
{ArvCamera *camera;ArvChunkParser *parser;GError *error =NULL;//连接相机camera = arv_camera_new (NULL, &error);if (ARV_IS_CAMERA (camera)) {ArvBuffer *buffer = NULL;printf ("Found camera '%s'\n", arv_camera_get_model_name (camera, NULL));//创建chunk parser对象parser = arv_camera_create_chunk_parser (camera);//设置启用的块数据arv_camera_set_chunks (camera, "Width,Height", &error);//获取单帧图像if (error == NULL)buffer = arv_camera_acquisition (camera, 1000000, &error);if (buffer != NULL) {printf ("ChunkWidth = %d\n", (int) arv_chunk_parser_get_integer_value (parser,buffer, "ChunkWidth", NULL));printf ("ChunkHeight = %d\n", (int) arv_chunk_parser_get_integer_value (parser,buffer, "ChunkHeight", NULL));} else {printf ("Failed to acquire a single buffer\n");}//释放资源g_clear_object (&buffer);g_clear_object (&parser);g_clear_object (&camera);}if (error != NULL) {/* En error happened, display the correspdonding message */printf ("Error: %s\n", error->message);g_clear_error (&error);return EXIT_FAILURE;}return EXIT_SUCCESS;
}
运行结果:
函数说明
arv_camera_create_chunk_parser
简介:创建一个与camera关联的ArvChunkParser对象,用于从ArvBuffer中提取块数据
ArvChunkParser* arv_camera_create_chunk_parser(ArvCamera* camera)
Available since: 0.4.0
arv_camera_set_chunks
简介:启用或禁用相机数据流中的块数据模式。
void arv_camera_set_chunks (ArvCamera* camera,const char* chunk_list, //以逗号分隔的字符串列表,指定要启用的块数据类型GError** error
)
-
启用块数据:如果
chunk_list
是非空字符串,函数将解析这个字符串并启用列表中指定的所有块数据类型。这意味着这些数据将包含在相机输出的每帧图像数据中。 -
禁用块数据:如果
chunk_list
是NULL
或空字符串,这表示要禁用块数据模式。相机将停止发送所有块数据,只提供纯粹的图像数据。
未列出的所有块数据都被禁用
Available since: 0.8.0
arv_chunk_parser_get_integer_value
简介:从相机的数据缓冲区中提取与给定名称匹配的块数据中的整数值
gint64 arv_chunk_parser_get_integer_value (ArvChunkParser* parser,ArvBuffer* buffer,const char* chunk, //一个字符串,指定要检索的块数据的名称GError** error
)