持续创作,加速成长!这是我参与「掘金日新计划 · 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 接口的相机
每个相机接口外观如下所示:
2、驱动默认的安装路径为:C:\Program Files\Basler\pylon 5
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格式图片的存储大小为:
因此上图图片的存储大小为:
可以看到我们计算出的大小和图片信息显示的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…