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

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

  • 简介
  • 例程代码
  • 函数说明
    • arv_camera_get_region
    • arv_camera_get_pixel_format_as_string
    • arv_camera_get_pixel_format
    • ARV_PIXEL_FORMAT_BIT_PER_PIXEL

      简介

      本文针对官方例程中的:03-camera-api做简单的讲解。并介绍其中调用的arv_camera_get_region,arv_camera_get_pixel_format_as_string,arv_camera_get_pixel_format,ARV_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)