• 开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition


    简介

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

    源码

    /* SPDX-License-Identifier:Unlicense */
    
    /* Aravis header */
    
    #include 
    
    /* Standard headers */
    
    #include 
    #include 
    
    /*
     * Connect to the first available camera, then acquire a single buffer.
     */
    
    int main (int argc, char **argv)
    {
    	ArvCamera *camera;
    	ArvBuffer *buffer;
    	GError *error = NULL;
    
    	/* Connect to the first available camera */
    	camera = arv_camera_new (NULL, &error);
        //camera = arv_camera_new ("192.168.6.23", &error);
    
    	if (ARV_IS_CAMERA (camera)) {
    		printf ("Found camera '%s'\n", arv_camera_get_model_name (camera, NULL));
    
    		/* Acquire a single buffer */
    		buffer = arv_camera_acquisition (camera, 0, &error);
    
    		if (ARV_IS_BUFFER (buffer)) {
    			/* Display some informations about the retrieved buffer */
    			printf ("Acquired %d×%d buffer\n",
    				arv_buffer_get_image_width (buffer),
    				arv_buffer_get_image_height (buffer));
    			/* Destroy the buffer */
    			g_clear_object (&buffer);
    		}
    
    		/* Destroy the camera instance */
    		g_clear_object (&camera);
    	}
    
    	if (error != NULL) {
    		/* An error happened, display the correspdonding message */
    		printf ("Error: %s\n", error->message);
    		return EXIT_FAILURE;
    	}
    
    	return EXIT_SUCCESS;
    }
    
    

    此例程较为简单,每一步的细节查看注释即可,此处不过多讲解。
    运行结果:

    函数说明

    arv_camera_new

    简介:创建一个ArvCamera对象,如果name是NULL,则连接第一个可用的相机。

    ArvCamera* arv_camera_new (const char* name, GError** error)
    

    如果是Gige相机,name的格式可以是:

    • --
    • -
    • -

    例如:

    • 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()释放

    ArvBuffer* arv_camera_acquisition(
    	ArvCamera* camera,         
    	guint64 timeout,     //采集超时时间,单位µs
    	GError** error)
    

    Available since: 0.8.0

    arv_camera_get_model_name

    简介:获取相机型号名称

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

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

    gint arv_buffer_get_image_height(ArvBuffer* buffer)
    

    Available since: 0.4.0

  • 相关阅读:
    如何实现晶圆载具ACSII码条码数据与TI玻璃管RFID标签16进制数据匹配
    不想当Window的Dialog不是一个好Modal,弹窗翻身记
    STM32F103C8 串口的使用
    图像处理之Bolb分析(一)
    anaconda使用系列教程--3)conda命令详解
    【3D目标检测】OpenPCDet自定义数据集训练
    尚医通gateway配置bug
    记录get和post的理解误区
    【TensorRT】神经网络中的量化
    解决tomcat时区错误问题
  • 原文地址:https://www.cnblogs.com/paw5zx/p/18125858