開源相機管理庫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
)