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

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

简介

本文针对官方例程中的: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,操作相机捕获图像并获取流数据中附加的块信息(例程中启用的块数据为图像的长和宽),主要操作步骤如下:

  • 连接相机
  • 设置启用的块数据
  • 图像采集
  • 打印相关数据
  • 释放资源
c 复制代码
/* 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中提取块数据

c 复制代码
ArvChunkParser* arv_camera_create_chunk_parser(ArvCamera* camera)

Available since: 0.4.0

arv_camera_set_chunks

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

c 复制代码
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

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

c 复制代码
gint64 arv_chunk_parser_get_integer_value (
  ArvChunkParser* parser,
  ArvBuffer* buffer,
  const char* chunk,    //一个字符串,指定要检索的块数据的名称
  GError** error
)
相关推荐
吃好睡好便好7 小时前
在Matlab中绘制阶梯图
开发语言·人工智能·学习·算法·机器学习·matlab
Restart-AHTCM7 小时前
LangChain学习之提示词模板 (Prompts) - 练习(2/8)
学习·langchain
YangYang9YangYan7 小时前
2026产品专员学习数据分析的价值与路径
学习·数据挖掘·数据分析
淘矿人7 小时前
【AI大模型】AI 大模型推理平台完整测评:8 家主流聚合服务对比分析
人工智能·sql·gpt·学习·github·php
我想我不够好。8 小时前
2026.5.20 消防监控学习 1.5hour
学习
爱喝水的鱼丶8 小时前
SAP-ABAP:数据类型与数据对象(8篇) 第七篇:进阶优化篇——基于类型与对象特征的性能优化技巧
运维·数据库·学习·性能优化·sap·abap·开发交流
知识分享小能手8 小时前
Flask入门学习教程,从入门到精通, 认识Flask路由 — 知识点详解 (2)
python·学习·flask
清平乐的技术专栏8 小时前
【Flink学习】(六)Flink 三大时间语义 + 水位线 Watermark
大数据·学习·flink
楼兰公子9 小时前
《深入理解Linux网络技术内幕》配套学习大纲 + 源码Demo + 进阶实战实例
linux·arm开发·学习
楼田莉子9 小时前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习