開源相機管理庫Aravis例程學習(五)——camera-api

paw5zx發表於2024-04-28

目錄
  • 簡介
  • 例程程式碼
  • 函式說明
    • arv_camera_get_region
    • arv_camera_get_pixel_format_as_string
    • arv_camera_get_pixel_format
    • ARV_PIXEL_FORMAT_BIT_PER_PIXEL

簡介

本文針對官方例程中的: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,獲取相機的一些基本設定,如影像的寬度、高度和畫素格式,主要操作步驟如下:

  • 連線相機
  • 獲取影像寬度,高度,畫素格式等資訊
  • 釋放資源
/* 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)透過指標返回,並記錄錯誤資訊。

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)

相關文章