ToB企服应用市场:ToB评测及商务社交产业平台

标题: 开源相机管理库Aravis例程学习(一)——单帧收罗single-acquisition [打印本页]

作者: 大连密封材料    时间: 2024-5-16 21:58
标题: 开源相机管理库Aravis例程学习(一)——单帧收罗single-acquisition
目录

简介

本文针对官方例程中的第一个例程:single-acquisition做简单的讲解,并简单分析其中调用的arv_camera_new ,arv_camera_acquisition,arv_camera_get_model_name ,arv_buffer_get_image_width ,arv_buffer_get_image_height 函数。
aravis版本:0.8.31
利用系统:ubuntu-20.04
gcc版本:9.4.0
源码
  1. /* SPDX-License-Identifier:Unlicense */
  2. /* Aravis header */
  3. #include <arv.h>
  4. /* Standard headers */
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. /*
  8. * Connect to the first available camera, then acquire a single buffer.
  9. */
  10. int main (int argc, char **argv)
  11. {
  12.         ArvCamera *camera;
  13.         ArvBuffer *buffer;
  14.         GError *error = NULL;
  15.         /* Connect to the first available camera */
  16.         camera = arv_camera_new (NULL, &error);
  17.     //camera = arv_camera_new ("192.168.6.23", &error);
  18.         if (ARV_IS_CAMERA (camera)) {
  19.                 printf ("Found camera '%s'\n", arv_camera_get_model_name (camera, NULL));
  20.                 /* Acquire a single buffer */
  21.                 buffer = arv_camera_acquisition (camera, 0, &error);
  22.                 if (ARV_IS_BUFFER (buffer)) {
  23.                         /* Display some informations about the retrieved buffer */
  24.                         printf ("Acquired %d×%d buffer\n",
  25.                                 arv_buffer_get_image_width (buffer),
  26.                                 arv_buffer_get_image_height (buffer));
  27.                         /* Destroy the buffer */
  28.                         g_clear_object (&buffer);
  29.                 }
  30.                 /* Destroy the camera instance */
  31.                 g_clear_object (&camera);
  32.         }
  33.         if (error != NULL) {
  34.                 /* An error happened, display the correspdonding message */
  35.                 printf ("Error: %s\n", error->message);
  36.                 return EXIT_FAILURE;
  37.         }
  38.         return EXIT_SUCCESS;
  39. }
复制代码
此例程较为简单,每一步的细节检察注释即可,此处不外多讲解。
运行效果:

函数说明

arv_camera_new

简介:创建一个ArvCamera对象,如果name是NULL,则连接第一个可用的相机。
  1. ArvCamera* arv_camera_new (const char* name, GError** error)
复制代码
如果是Gige相机,name的格式可以是:
比方:
Available since 0.8.0
arv_camera_acquisition

简介:获取一帧图像。
留意:①本函数会将相机设置为单帧收罗模式②返回的buffer终极必须要通过g_object_unref()释放
  1. ArvBuffer* arv_camera_acquisition(
  2.         ArvCamera* camera,         
  3.         guint64 timeout,     //采集超时时间,单位µs
  4.         GError** error)
复制代码
Available since: 0.8.0
arv_camera_get_model_name

简介:获取相机型号名称
  1. const char* arv_camera_get_model_name (ArvCamera* camera, GError** error)
复制代码
Available since 0.8.0
arv_buffer_get_image_width

简介:获取图片的width
留意:此函数只能在buffer payload为ARV_BUFFER_PAYLOAD_TYPE_IMAGE、ARV_BUFFER_PAYLOAD_TYPE_EXTENDED_CHUNK_DATA或ARV_BUFFER_PAYLOAD_TYPE_MULTIPART时使用
  1. gint arv_buffer_get_image_width(ArvBuffer* buffer)
复制代码
Available since: 0.4.0
arv_buffer_get_image_height

简介:获取图片的height
留意:此函数只能在buffer payload为ARV_BUFFER_PAYLOAD_TYPE_IMAGE、ARV_BUFFER_PAYLOAD_TYPE_EXTENDED_CHUNK_DATA或ARV_BUFFER_PAYLOAD_TYPE_MULTIPART时使用
  1. gint arv_buffer_get_image_height(ArvBuffer* buffer)
复制代码
Available since: 0.4.0

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4