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

paw5zx Lv4

简介

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

aravis版本:0.8.31
操作系统:ubuntu-20.04
gcc版本:9.4.0

例程代码

这段代码使用Aravis的API,获取相机的一些基本设置,如图像的宽度、高度和像素格式,主要操作步骤如下:

  • 连接相机
  • 获取图像宽度,高度,像素格式等信息
  • 释放资源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* 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 ArvCamera 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;
int format_number;
int bit_per_pixel;

printf ("Found camera '%s'\n", arv_camera_get_model_name (camera, NULL));
//获取图像宽度和高度
if (!error) arv_camera_get_region (camera, NULL, NULL, &width, &height, &error);
//获取图像像素格式
if (!error) pixel_format = arv_camera_get_pixel_format_as_string (camera, &error);
if (!error) format_number = arv_camera_get_pixel_format (camera, &error);
//获取图像像素位数
if (!error) bit_per_pixel = ARV_PIXEL_FORMAT_BIT_PER_PIXEL (format_number);


if (error == NULL)
{
printf ("Width = %d\n", width);
printf ("Height = %d\n", height);
printf ("Pixel format = %s\n", pixel_format);
printf ("Pixel format number = %d\n", format_number);
printf ("Bit per pixel = %d\n", bit_per_pixel);
}

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;
}

运行结果:

函数说明

arv_camera_get_region

简介:用于获取相机当前的感兴趣区域(ROI),此函数会将当前相机的ROI的位置坐标(x,y)和尺寸(width,height)通过指针返回,并记录错误信息。

1
2
3
4
5
6
7
8
void arv_camera_get_region (
ArvCamera* camera,
gint* x,
gint* y,
gint* width,
gint* height,
GError** error
)

其中:
[in]camera:相机对象
[out]x:ROI起始x坐标
[out]y:ROI起始y坐标
[out]width:ROI宽度
[out]height:ROI高度
[out]error:错误信息

Available since: 0.8.0

arv_camera_get_pixel_format_as_string

简介:从连接的相机中获取当前设置的像素格式,以字符串形式返回。

1
2
3
4
const char* arv_camera_get_pixel_format_as_string (
ArvCamera* camera
GError** error
)

Available since: 0.8.0

arv_camera_get_pixel_format

简介:从连接的相机中获取当前设置的像素格式,返回其编码。

1
2
3
4
ArvPixelFormat arv_camera_get_pixel_format(
ArvCamera* camera
GError** error
)

Available since: 0.8.0

ARV_PIXEL_FORMAT_BIT_PER_PIXEL

简介:宏定义,用于获取pixel_format的第17位到第24位的值,其表示的是像素格式的Bpp(bits per pixel)。

1
#define ARV_PIXEL_FORMAT_BIT_PER_PIXEL(pixel_format) (((pixel_format) >> 16) & 0xff)
  • 标题: 开源相机管理库Aravis例程学习(五)——camera-api
  • 作者: paw5zx
  • 创建于 : 2024-04-28 12:13:23
  • 更新于 : 2024-09-04 17:16:10
  • 链接: https://paw5zx.github.io/aravis-camera-api/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论