经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition
来源:cnblogs  作者:paw5zx  时间:2024/4/10 15:14:39  对本文有异议

简介

本文针对官方例程中的第一个例程:single-acquisition做简单的讲解,并简单分析其中调用的arv_camera_new arv_camera_acquisitionarv_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的格式可以是:

  • <vendor>-<model>-<serial>
  • <vendor_alias>-<serial>
  • <vendor>-<serial>
  • <user_id>
  • <ip_address>
  • <mac_address>

例如:

  • The Imaging Source Europe GmbH-DFK 33GX265-39020369
  • The Imaging Source Europe GmbH-39020369
  • TIS-39020369
  • 192.168.0.2
  • 00:07:48:af:a2:61

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_IMAGEARV_BUFFER_PAYLOAD_TYPE_EXTENDED_CHUNK_DATAARV_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_IMAGEARV_BUFFER_PAYLOAD_TYPE_EXTENDED_CHUNK_DATAARV_BUFFER_PAYLOAD_TYPE_MULTIPART时使用

  1. gint arv_buffer_get_image_height(ArvBuffer* buffer)

Available since: 0.4.0

原文链接:https://www.cnblogs.com/paw5zx/p/18125858

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号