首页 > 其他分享 >开源相机管理库Aravis例程学习(七)——chunk-parser

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

时间:2024-05-10 17:25:16浏览次数:12  
标签:arv 例程 chunk parser camera error NULL

目录

简介

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

  • 连接相机
  • 设置启用的块数据
  • 图像采集
  • 打印相关数据
  • 释放资源
/* 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_listNULL 或空字符串,这表示要禁用块数据模式。相机将停止发送所有块数据,只提供纯粹的图像数据。

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

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
)

标签:arv,例程,chunk,parser,camera,error,NULL
From: https://www.cnblogs.com/paw5zx/p/18184895

相关文章

  • 学习记录+vcode+GPIO例程+正点原子 DNESP32S3 开发板教程-IDF 版
    第一个程序:UART模式和JTAG模式,配置完成不同。配置主要就是.vscode文件夹中 c_cpp_properties.json,tasks.json,launch.json,settings.json四个文件。一个想法:备份UART模式和JTAG模式的配置文件,用时直接文件替换。简单粗暴方式是.vscode文件夹替换。当然每次要选好串口、设置目标......
  • 【专题STM32F03】 使用 STM32Cube\Repository\STM32Cube_FW_F1_V1.8.5 中例程由ST77
    1)修改Project\STM32Cube_FW_F1_V1.8.5\Projects\STM32F103RB-Nucleo\Demonstrations\Adafruit_LCD_1_8_SD_Joystick2)接线(见stm32f1xx_nucleo.h)LCD_LED_PIN接高电平LCD_CS_PIN  接PB6LCD_DC_PIN  接PA9LCD_SPI_CLK  接SPI1,PA5LCD_SPI_SDA  接SPI1,PA73)修......
  • 开源相机管理库Aravis例程学习(五)——camera-api
    目录简介例程代码函数说明arv_camera_get_regionarv_camera_get_pixel_format_as_stringarv_camera_get_pixel_formatARV_PIXEL_FORMAT_BIT_PER_PIXEL简介本文针对官方例程中的:03-camera-api做简单的讲解。并介绍其中调用的arv_camera_get_region,arv_camera_get_pixel_format_as......
  • 开源相机管理库Aravis例程学习(四)——multiple-acquisition-signal
    目录简介例程代码函数说明g_main_loop_newg_main_loop_rung_main_loop_quitg_signal_connectarv_stream_set_emit_signalsQ&A回调函数的同步调用与异步调用帧丢失问题简介本文针对官方例程中的:02-multiple-acquisition-signal做简单的讲解。并简单介绍其中调用的g_main_loop_new......
  • 在windows下使用COSCMD时因Python版本不支持导致报SafeConfigParser不支持的错误
    在Windows下通过pip安装COSCMD后,使用相关命令操作Coscmd时报错,具体看错误信息是:SafeConfigParser不再支持。这是因为本地的python的版本是3.12.2,此版本已经不再支持SafeConfigParser这个类。而CosCmd的源代码是用的SafeConfigParser这个类,所以导致报错。 解决方案:修改C:\Pyth......
  • 使用digital amp时通过mtkparser从cfg音频文件转成ini格式
    针对digitalamp主要利用ini里的内容。drivercode会依据iniformattype去parser内容给digitalamp。下面是mtkparser的格式[INIT_TABLE]IniFormatType=x//MtkParser目前固定填0即可count=xx;//xx是后面部分index总数index_x=AA,BB,CC;//x:命令index值......
  • 【专题STM32F03】FreeRTOS 队列queue传递结构体,野火例程代码简单修改。
    /************************************************************************@filemain.c*@authorfire*@versionV1.0*@date2018-xx-xx*@briefFreeRTOSV9.0.0+STM32消息队列******************************************************......
  • iniparser配置文件
    介绍程序没有任何配置文件,那么它对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,为了让程序出厂后还能根据需要进行必要的配置,所以要用配置文件。下载下载地址:https://gitcode.com/ndevilla/iniparser.git#解压缩cdiniparsermake#将dictiona......
  • PS/2 packet parser and datapath
    Seealso:PS/2packetparser.Nowthatyouhaveastatemachinethatwillidentifythree-bytemessagesinaPS/2bytestream,addadatapaththatwillalsooutputthe24-bit(3byte)messagewheneverapacketisreceived(out_bytes[23:16]isthefirstby......
  • PS/2 packet parser
    ThePS/2mouseprotocolsendsmessagesthatarethreebyteslong.However,withinacontinuousbytestream,it'snotobviouswheremessagesstartandend.Theonlyindicationisthatthefirstbyteofeachthreebytemessagealwayshasbit[3]=1(but......