继续创造,加速成长!这是我参与「日新方案 10 月更文应战」的第6天,点击查看活动概况

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 接口的相机

每个相机接口外观如下所示:

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

2、驱动默许的装置途径为:C:\Program Files\Basler\pylon 5

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

2 basler相机衔接

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

1、翻开pylon IP Configurator应用程序

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

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

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

3、然后翻开数据收集软件pylon Viewer软件,此刻能够看到GigE下衔接的相机Basler acA1600-20gm(红色的圆按钮便是数据收集按钮!)

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

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

1、挑选视频录制或接连帧的照片收集

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

  • Video (AVI)录制视频收集
  • Sequence of still images:接连的帧照片收集

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

2)视频收集窗口翻开如下:

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

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

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

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

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

basler工业面阵相机使用 和 python pypylon模块调用basler相机采集数据

2、因而bmp格局图片的存储巨细为:

bmp格局图片存储巨细=whbit_deep(单位bit)bmp格局图片存储巨细=w\times h \times bit\_deep(单位bit)

因而上图图片的存储巨细为:

存储巨细=1626123624bit8=6029208Byte=6029208Byte1024=5887.8984375KB=5887.8984375KB1024≈5.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…