开源相机管理库Aravis例程学习(七)——chunk-parser

paw5zx Lv4

简介

本文针对官方例程 中的:05-chunk-parser做简单的讲解。并介绍其中调用的arv_camera_create_chunk_parserarv_camera_set_chunksarv_chunk_parser_get_integer_value函数。

aravis版本:0.8.31
操作系统:ubuntu-20.04
gcc版本:9.4.0

例程代码

这段代码使用Aravis的API,操作相机捕获图像并获取流数据中附加的块信息(例程中启用的块数据为图像的长和宽),主要操作步骤如下:

  • 连接相机
  • 设置启用的块数据
  • 图像采集
  • 打印相关数据
  • 释放资源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/* 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中提取块数据

1
ArvChunkParser* arv_camera_create_chunk_parser(ArvCamera* camera)

Available since: 0.4.0

arv_camera_set_chunks

简介:启用或禁用相机数据流中的块数据模式。

1
2
3
4
5
void arv_camera_set_chunks (
ArvCamera* camera,
const char* chunk_list, //以逗号分隔的字符串列表,指定要启用的块数据类型
GError** error
)
  • 启用块数据:如果 chunk_list 是非空字符串,函数将解析这个字符串并启用列表中指定的所有块数据类型。这意味着这些数据将包含在相机输出的每帧图像数据中。

  • 禁用块数据:如果 chunk_listNULL 或空字符串,这表示要禁用块数据模式。相机将停止发送所有块数据,只提供纯粹的图像数据。

未列出的所有块数据都被禁用

Available since: 0.8.0

arv_chunk_parser_get_integer_value

简介:从相机的数据缓冲区中提取与给定名称匹配的块数据中的整数值

1
2
3
4
5
6
gint64 arv_chunk_parser_get_integer_value (
ArvChunkParser* parser,
ArvBuffer* buffer,
const char* chunk, //一个字符串,指定要检索的块数据的名称
GError** error
)
  • 标题: 开源相机管理库Aravis例程学习(七)——chunk-parser
  • 作者: paw5zx
  • 创建于 : 2024-05-10 17:10:23
  • 更新于 : 2024-09-04 17:17:04
  • 链接: https://paw5zx.github.io/aravis-chunk-parser/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论