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

目录

简介

本文针对官方例程中的: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,获取相机的一些基本设置,如图像的宽度、高度和像素格式,主要操作步骤如下:

  • 连接相机
  • 获取图像宽度,高度,像素格式等信息
  • 释放资源
c 复制代码
/* 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)通过指针返回,并记录错误信息。

c 复制代码
void arv_camera_get_region (
  ArvCamera* camera,
  gint* x,
  gint* y,
  gint* width,
  gint* height,
  GError** error
)

其中:

incamera:相机对象

outx:ROI起始x坐标

outy:ROI起始y坐标

outwidth:ROI宽度

outheight:ROI高度

outerror:错误信息

Available since: 0.8.0

arv_camera_get_pixel_format_as_string

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

c 复制代码
const char* arv_camera_get_pixel_format_as_string (
  ArvCamera* camera
  GError** error
)

Available since: 0.8.0

arv_camera_get_pixel_format

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

c 复制代码
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)。

c 复制代码
#define ARV_PIXEL_FORMAT_BIT_PER_PIXEL(pixel_format) (((pixel_format) >> 16) & 0xff)
相关推荐
扶尔魔ocy11 分钟前
【QT入门到晋级】用开源的自定义控件开发
c++·qt·自定义控件
akinggw1 小时前
libsherpacore - 基于 sherpa-onnx 的 C++ 语音交互静态库
c++·交互·语音识别
xiaoye-duck2 小时前
《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(中):全量响应实现和测试
网络·c++·语言模型·chatgpt
東隅已逝,桑榆非晚2 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
eggwyw3 小时前
C++相交链表和反转链表详解
开发语言·c++
杜 硕3 小时前
从零开始的C++生活——第六讲——02
c++·算法·生活
小超人诞生日记3 小时前
C++ STL 反向迭代器:从源码框架到适配器实现
c++·算法
青少儿编程课堂3 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园成语接龙大挑战解析
c++·python·算法·bfs·信息学竞赛
小贾要学习4 小时前
【C++后端开发项目】Reactor 模型 / C++ 仿写 muduo HTTP 服务器:让底层网络库真正跑起网页
linux·服务器·c++·http·网络编程·muduo·reactor模型
A7bert7774 小时前
【MobileSAM部署至RK3588】环境适配→转换RKNN→开发板部署
c++·人工智能·深度学习·目标检测·ubuntu