2

开源相机管理库Aravis例程学习(六)——camera-features - paw5zx

 2 weeks ago
source link: https://www.cnblogs.com/paw5zx/p/18168917
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

开源相机管理库Aravis例程学习(六)——camera-features

本文针对官方例程中的:04-camera-features做简单的讲解。并介绍其中调用的arv_camera_get_integerarv_camera_get_string

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 <stdlib.h>#include <stdio.h> /* * Connect to the first available camera, then display the current settings for image width and height, as well as the * pixel format, using the more generic ArvCamera feature API. */ int main (int argc, char **argv){ ArvCamera *camera; GError *error = NULL; //连接相机 camera = arv_camera_new (NULL, &error); if (ARV_IS_CAMERA (camera)) { int width; int height; const char *pixel_format; printf ("Found camera '%s'\n", arv_camera_get_model_name (camera, NULL)); /* Retrieve generally mandatory features for transmitters */ if (!error) width = arv_camera_get_integer (camera, "Width", &error); if (!error) height = arv_camera_get_integer (camera, "Height", &error); if (!error) pixel_format = arv_camera_get_string (camera, "PixelFormat", &error); if (error == NULL) { printf ("Width = %d\n", width); printf ("Height = %d\n", height); printf ("Pixel format = %s\n", pixel_format); } g_clear_object (&camera); } if (error != NULL) { /* En error happened, display the correspdonding message */ printf ("Error: %s\n", error->message); return EXIT_FAILURE; } return EXIT_SUCCESS;}

这个例程与03-camera-api实现的功能相似,但是不同的是本文的代码使用的是更为通用的API(arv_camera_get_integerarv_camera_get_string)来获取的相机的参数。

我们查看03-camera-api中的arv_camera_get_regionarv_camera_get_pixel_format_as_string的函数定义可以发现,他们的底层其实就是通过调用arv_camera_get_integerarv_camera_get_string来实现的相关功能:

//file: arvcamera.cvoid arv_camera_get_region (ArvCamera *camera, gint *x, gint *y, gint *width, gint *height, GError **error){ ArvCameraPrivate *priv = arv_camera_get_instance_private (camera); GError *local_error = NULL; g_return_if_fail (ARV_IS_CAMERA (camera)); if (x != NULL) *x = priv->has_region_offset ? arv_camera_get_integer (camera, "OffsetX", &local_error) : 0; if (y != NULL && local_error == NULL) *y = priv->has_region_offset ? arv_camera_get_integer (camera, "OffsetY", &local_error) : 0; if (width != NULL && local_error == NULL) *width = arv_camera_get_integer (camera, "Width", &local_error); if (height != NULL && local_error == NULL) *height = arv_camera_get_integer (camera, "Height", &local_error); if (local_error != NULL) g_propagate_error (error, local_error);} const char * arv_camera_get_pixel_format_as_string (ArvCamera *camera, GError **error){ return arv_camera_get_string (camera, "PixelFormat", error);}

运行结果:

3329633-20240430235942973-16886135.png

arv_camera_get_integer

简介:获取已连接相机的一个整数型特性的值

gint64 arv_camera_get_integer ( ArvCamera* camera, const char* feature, GError** error)

Available since: 0.8.0

arv_camera_get_string

简介:获取已连接相机的一个字符串型特性的值

const char* arv_camera_get_string ( ArvCamera* camera, const char* feature, GError** error)

Available since: 0.8.0


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK