当前位置 : 首页 > 文章 > Aravis相机API使用介绍及示例解析

Aravis相机API使用介绍及示例解析

来源:辣条科技站Gamer发布时间: 2024-04-28 15:31:39

简介

本文旨在对官方例程中的"03-camera-api"进行简单讲解,并介绍其中调用的arv_camera_get_region、arv_camera_get_pixel_format_as_string、arv_camera_get_pixel_format和ARV_PIXEL_FORMAT_BIT_PER_PIXEL等函数。

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>

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)通过指针返回,并记录错误信息。

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

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

const char* arv_camera_get_pixel_format_as_string (
  ArvCamera* camera
  GError** error
)

Available since: 0.8.0

arv_camera_get_pixel_format

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

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)。

#define ARV_PIXEL_FORMAT_BIT_PER_PIXEL(pixel_format) (((pixel_format) >> 16) & 0xff)