开源相机管理库Aravis例程学习(七)——chunk-parser
1.开源相机管理库Aravis学习——安装2.开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition3.开源相机管理库Aravis例程学习(二)——连续采集multiple-acquisition-main-thread4.开源相机管理库Aravis例程学习(三)——注册回调multiple-acquisition-callback5.开源相机管理库Aravis例程学习(四)——multiple-acquisition-signal6.开源相机管理库Aravis例程学习(五)——camera-api7.开源相机管理库Aravis学习——PixelFormat编码规则8.开源相机管理库Aravis例程学习(六)——camera-features
9.开源相机管理库Aravis例程学习(七)——chunk-parser
简介
本文针对官方例程中的: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 )
合集:
Aravis
分类:
工业相机 / Aravis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人