相关文章推荐
刚毅的韭菜  ·  ASP.NET ...·  2 年前    · 
心软的鼠标  ·  lnk1168 cannot open-掘金·  2 年前    · 

1 basler工业相机介绍与驱动安装

1.1 basler介绍

1、basler工业相机是德国品牌,从驱动和连接上感觉要比dalsa的相机更好连接和使用,并且basler自带的驱动 pylon Viewer 能够 保存视频 和 保存连续的视频帧图片 ,比较方便对相机进行测试工作。而dalsa的驱动 CamExpert 如果要保存连续的帧图片,还必须要根据接口自己去写,这样就有些耽误测试的进度!

2、20220907 周三,去席总哪里拿了一个baslar的面阵黑白相机

3、相机型号为basler acA1600-20gm,目前该相机已经停产( 参考 )!

  • 该相机的用户手册下载
  • 里面有该相机的参数介绍,相机的设计图,相机电源针脚图等介绍。

    1.2 basler驱动的安装

    1、安装baslar驱动 Basler_pylon_5.0.9.10388.exe 如下,需要选择相机的 连接接口 ,如下,一共有四种:

  • USB 接口的相机
  • GigE 接口的相机( 使用网线连接,一般工业相机使用的都是千兆网线
  • FireWire 接口的相机
  • Camera Link 接口的相机
  • 每个相机接口外观如下所示:

    2 basler相机连接

    这里我以 basler 面阵黑白相机acA1600-20gm 为例说明,(该相机是GigE接口,即使用网线进行连接),其他相机也是如此,没有什么区别。

    1、打开 pylon IP Configurator应用程序

    2、首先在命令行下使用 ipconfig命令 查看自己以太网的IP地址,我的是 192.168.1.22 ,因此只需要把相机的IP地址配置成同网段的 192.168.1.xxx 即可连接,如下:

    3、然后打开数据采集软件 pylon Viewer软件 ,此时可以看到GigE下连接的相机 Basler acA1600-20gm (红色的圆按钮就是数据采集按钮!)

    3 相机使用pylon Viewer软件采集视频或图片数据

    1、选择视频录制或连续帧的照片采集

    1)点击工具栏中的 红色按钮 ,选择:

  • Video (AVI)录制视频采集
  • Sequence of still images:连续的帧照片采集
  • 2)视频采集窗口打开如下:

    4 在pylon Viewer中调节相机参数设置

    1、打开 View-Features (Basler acA1600-20gm) 就可以在左下方看到对应的窗口,此时可以在里面设置相机的 触发方式、白平衡等等参数

    5 basler相机的python接口

    pypylon库包是basler官方提供的basler的相机的python接口,安装方式:

    pip install pypylon

    5.1 使用python pypylon库包调用basler相机

    1、连接上相机之后,就可以使用如下的 pylon接口 调用 basler相机进行数据采集了 。如下是读取摄像头的每一帧数据并保存!( 参考

    from pypylon import pylon
    import cv2
    # conecting to the first available camera
    camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateFirstDevice())
    # Grabing Continusely (video) with minimal delay
    camera.StartGrabbing(pylon.GrabStrategy_LatestImageOnly)
    converter = pylon.ImageFormatConverter()
    # converting to opencv bgr format
    converter.OutputPixelFormat = pylon.PixelType_BGR8packed
    converter.OutputBitAlignment = pylon.OutputBitAlignment_MsbAligned
    i = 0
    while camera.IsGrabbing():
        grabResult = camera.RetrieveResult(1000, pylon.TimeoutHandling_ThrowException)
        i += 1
        if grabResult.GrabSucceeded():
            # Access the image data
            image = converter.Convert(grabResult)
            img = image.GetArray()
            cv2.namedWindow('title', cv2.WINDOW_NORMAL)
            cv2.imshow('title', img)
            cv2.imwrite(r'D:\dataset\test_data\%06d.jpg'%i, img)
            k = cv2.waitKey(1)
            if k == 27:
                break
        grabResult.Release()
    # Releasing the resource
    camera.StopGrabbing()
    cv2.destroyAllWindows()
    

    6 相机保存图片存储大小的计算

    bmp格式图片存储大小计算

    因为,bmp是位图(bitmap)就是原始数据,数据是没有经过压缩的,jpg和png都是经过压缩的格式,因此不能够直接计算出他们的存储大小

    1、首选确定bmp图像的位深,如下示例bmp图像的位深为24位

    一个字节等于八位:1Byte=8bit

    2、因此bmp格式图片的存储大小为:

    bmp格式图片存储大小=w×h×bit_deep(单位bitbmp格式图片存储大小=w\times h \times bit\_deep(单位bit)

    因此上图图片的存储大小为:

    存储大小=1626×1236×24bit8=6029208Byte=6029208Byte1024=5887.8984375KB=5887.8984375KB10245.7499MB存储大小=\frac{1626\times 1236 \times 24bit}{8}=6029208 Byte=\frac{6029208 Byte}{1024}=5887.8984375KB=\frac{5887.8984375KB}{1024} \approx 5.7499MB

    可以看到我们计算出的大小和图片信息显示的5.75MB是保持一致的!

    3、其他格式

    一般其他格式图片的位深

  • jpg格式是RGB通道,位深是24
  • png格式是RGBA通道,位深是32
  • 但是jpg和png图像是经过压缩的,因此存储大小会比bmp格式小很多,比如一张表面bmp格式图片可能9MB大小,保存成png格式可能只有200KB大小!(当然具体大小是多少,应该是和压缩的方式密切相关的,压缩越多,图片存储大小就越小,这样图像的质量也就越差!)

    参考www.jianshu.com/p/3eceec14f… 参考blog.csdn.net/augustme/ar… 参考blog.csdn.net/weixin_4364…

    分类:
    人工智能
    标签: