简介

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

开源相机管理库Aravis例程学习(五)——camera-api的更多相关文章

  1. Git---初入开源代码管理库的学习过程003

    Git常用命令总结 上接<Git 初入开源代码管理库的学习过程>学了一周Git,基本有了个认识.每一位比我厉害的,都是大牛,网上找了几篇博客和教材(感谢你们),边学习边实践用了四天,写笔记 ...

  2. Android Fresco (Facebook开源的图片加载管理库)

    Fresco是Facebook开源的一个图片加载和管理库. 这里是Fresco的GitHub网址. 同类型的开源库市面有非常多,比如Picasso, Universal Image Loader, G ...

  3. 值得学习的C语言开源项目和库

    收集一些C/C++相关的源码,如有更高效的库,请提醒我 补充上去 C/C++相关交流Q群 1414577 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具. ...

  4. C++的开源跨平台日志库glog学习研究(三)--杂项

    在前面对glog分别做了两次学习,请看C++的开源跨平台日志库glog学习研究(一).C++的开源跨平台日志库glog学习研究(二)--宏的使用,这篇再做个扫尾工作,算是基本完成了. 编译期断言 动态 ...

  5. C++的开源跨平台日志库glog学习研究(二)--宏的使用

    上一篇从整个工程上简单分析了glog,请看C++的开源跨平台日志库glog学习研究(一),这一篇对glog的实现代码入手,比如在其源码中以宏的使用最为广泛,接下来就先对各种宏的使用做一简单分析. 1. ...

  6. java_web学习(五) JSTL标准标签库

    1.什么是JSTL JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. ...

  7. 59.Android开源项目及库 (转)

    转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_so ...

  8. Android开源项目及库搜集

    TimLiu-Android 自己总结的Android开源项目及库. github排名 https://github.com/trending,github搜索:https://github.com/ ...

  9. iOS -- 开源项目和库

    TimLiu-iOS 目录 UI 下拉刷新 模糊效果 AutoLayout 富文本 图表 表相关与Tabbar 隐藏与显示 HUD与Toast 对话框 其他UI 动画 侧滑与右滑返回手势 gif动画 ...

  10. Android 开源项目及库汇总(2)

    Android 开源项目及库汇总(2) ListenToCode 2.7 2018.10.10 15:43 字数 8527 阅读 1001评论 0喜欢 29 地图 百度地图– Android百度地图 ...

随机推荐

  1. 自建AXI4的IP核的地址问题

    自建AXI4的IP核的地址问题 1.问题概述 在AXI4中,对应的操作通过对对应的寄存器设置来完成.其中的寄存器又分为数据寄存器和地址寄存器.其中,如果只是想要操作数据的话,只需要使用数据寄存器即可. ...

  2. IDEA MyBatis Log 插件,打印SQL语句

    打开Settings->plugins 搜索插件 MyBatis Log点击安装,完成后重启IDEA即可. 点击Tools,选择 MyBatis Log Plugin ,会在下方打开一个窗口,这 ...

  3. Java日期、字符串、毫秒值格式转换

    1 /** 2 * 3 */ 4 package study.reliable; 5 /** 6 * @author : Administrator 7 * @date :2022年4月21日 下午9 ...

  4. C++设计模式 - 模板方法(Template Method)

    组件协作模式: 现代软件专业分工之后的第一个结果是"框架与应用程序的划分","组件协作"模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用 ...

  5. #长链剖分#CF208E Blood Cousins

    题目 给你一片森林,每次询问一个点与多少个点拥有共同的 \(K\) 级祖先 分析 设\(dp[x][d]\)表示以\(x\)为根节点时深度为\(d\)的个数, 那么\(dp[x][d]=\sum\{d ...

  6. OpenHarmony AI框架开发指导

    一.概述 1.功能简介 AI 业务子系统是 OpenHarmony 提供原生的分布式 AI 能力的子系统.AI 业务子系统提供了统一的 AI 引擎框架,实现算法能力快速插件化集成. AI 引擎框架主要 ...

  7. Matplotlib绘图设置--- 图例设置

    plt.legend()和ax.legend()参数设置 自动会将每条线的标签与其风格.颜色进行匹配. plt.legend(*args, **kwargs) Place a legend on th ...

  8. 当JDBC遇上返回Cursor

    当 JDBC 遇上返回 Cursor 本文出处:https://www.modb.pro/db/400426 使用 jdbc 访问 PostgreSQL 或者 MogDB(openGauss)数据库里 ...

  9. HDC2021技术分论坛:盘点分布式软总线数据传输技术中的黑科技

    作者:houweibo,软总线首席技术专家:lidonghua,软总线技术专家 随着万物互联时代的到来,特别是大量媒体资源的涌入和使用,用户对传输的要求不断提高,怎样的传输技术才能满足未来的用户需求呢 ...

  10. C 语言宏 + 内联汇编实现 MIPS 系统调用

    目录 内联汇编 宏函数 宏定义 Syscall 内联汇编 编译测试 笔者最近作业要求练习 MIPS 汇编,熟悉 MIPS 汇编代码与 C 语言代码的对应关系.然而 SPIM/MARS 仿真器不能链接共 ...