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


    简介

    本文针对官方例程中的: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 
    /* Standard headers */
    #include 
    #include 
    
    /*
     * 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)
    
  • 相关阅读:
    SpringCloud微服务
    牛顿-拉夫森算法:用Python实现
    这一次,话筒给你:向自由软件之父 Richard M. Stallman 提问啦!
    使用 LogProperties source generator 丰富日志
    MD5 算法流程
    冰冰学习笔记:内存地址空间
    MySQ快速基础篇_MySQL数据库基础
    gcc编译器和gdb调试工具
    目标检测算法——医学图像开源数据集汇总(附下载链接)
    自动化测试基础篇:Selenium 框架设计(POM)
  • 原文地址:https://www.cnblogs.com/paw5zx/p/18163483