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

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

  • 简介
  • 例程代码
  • 函数说明
    • arv_camera_get_integer
    • arv_camera_get_string

简介

本文针对官方例程中的: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.c
void 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);
}

运行结果:
在这里插入图片描述

函数说明

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661010.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试题-Redis篇

什么是 Redis? Redis 是完全开源免费的&#xff0c;遵守 BSD 协议&#xff0c;是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有以下三个特点&#xff1a; Redis 支持数据的持久化&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的时 …

【再探】设计模式—抽象工厂及建造者模式

抽象工厂模式和建造者模式都属于创建型模式。两者都能创建对应的对象&#xff0c;而创建者模式更侧重于创建复杂对象&#xff0c;将对象的创建过程封装起来&#xff0c;让客户端不需要知道对象的内部细节。 1 抽象工厂模式 需求&#xff1a; 在使用工厂方法模式时&#xff0…

C++入门基础(二)

目录 缺省参数缺省参数概念缺省参数分类全缺省参数半缺省参数声明与定义分离 缺省参数的应用 函数重载函数重载概念例子1 参数类型不同例子2 参数的个数不同例子3 参数的顺序不同 C支持函数重载的原理--名字修饰(name Mangling) 感谢各位大佬对我的支持,如果我的文章对你有用,欢…

Rust中的并发性:Sync 和 Send Traits

在并发的世界中&#xff0c;最常见的并发安全问题就是数据竞争&#xff0c;也就是两个线程同时对一个变量进行读写操作。但当你在 Safe Rust 中写出有数据竞争的代码时&#xff0c;编译器会直接拒绝编译。那么它是靠什么魔法做到的呢&#xff1f; 这就不得不谈 Send 和 Sync 这…

【MySQL精炼宝库】深度解析索引 | 事务

目录 一、索引 1.1 索引(index)概念&#xff1a; 1.2 索引的作用&#xff1a; 1.3 索引的缺点&#xff1a; 1.4 索引的使用场景&#xff1a; 1.5 索引的使用&#xff1a; 1.6 面试题:索引底层的数据结构&#xff08;核心内容&#xff09;&#xff1a; 1.7 索引列查询(主…

Stability AI 推出稳定音频 2.0:为创作者提供先进的 AI 生成音频

概述 Stability AI 的发布再次突破了创新的界限。这一尖端模型以其前身的成功为基础&#xff0c;引入了一系列突破性的功能&#xff0c;有望彻底改变艺术家和音乐家创建和操作音频内容的方式。 Stable Audio 2.0 代表了人工智能生成音频发展的一个重要里程碑&#xff0c;为质量…

【docker】Docker开启远程访问

将构建的镜像自动上传到服务器。 需要开放 Docker 的端口&#xff0c;让我们在本地能连接上服务器的 Docker&#xff0c;这样&#xff0c;才能上传构建的镜像给 Docker。 开启远程访问 首先在服务器打开 Docker 的服务文件 vim /usr/lib/systemd/system/docker.service修改…

Java项目:基于SSM框架实现的实践项目管理系统(ssm+B/S架构+源码+数据库+毕业论文+开题报告)

一、项目简介 本项目是一套基于SSM框架实现的实践项目管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff…

使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B

2024年4月18日&#xff0c;meta开源了Llama 3大模型[1]&#xff0c;虽然只有8B[2]和70B[3]两个版本&#xff0c;但Llama 3表现出来的强大能力还是让AI大模型界为之震撼了一番&#xff0c;本人亲测Llama3-70B版本的推理能力十分接近于OpenAI的GPT-4[4]&#xff0c;何况还有一个4…

罗德与施瓦茨RS SMR40 10MHZ-40GHZ信号分析仪

罗德与施瓦茨R&S SMR40 10MHZ-40GHZ信号分析仪 SMR40 被设计为具有脉冲调制功能的 CW 发生器。SMR40 具有 < 10 ms 2 ms /GHz 的极快频率切换时间和 0.1 Hz 的分辨率。SMR40 包含一个电子振荡器&#xff0c;该电路能够创建重复波形。 附加功能&#xff1a; 频率范围&a…

网页使用之如何返回json/xml

后端返回json数据给前端进行渲染的方式比较熟悉&#xff0c;至于返回html页面&#xff0c;返回xml的方式接触逐渐减少&#xff0c;来在项目中熟悉这一点。 返回文本数据 json姿势的返回实属最简单的方式&#xff0c;在SpringBoot应用中&#xff0c;有两种简单的方式 1.直接在…

【stomp 实战】spring websocket用户消息发送源码分析

这一节&#xff0c;我们学习用户消息是如何发送的。 消息的分类 spring websocket将消息分为两种&#xff0c;一种是给指定的用户发送&#xff08;用户消息&#xff09;&#xff0c;一种是广播消息&#xff0c;即给所有用户发送消息。那怎么区分这两种消息呢?那就是用前缀了…