共计 2929 个字符,预计需要花费 8 分钟才能阅读完成。
明天应用到了大恒的 USB 工业相机,须要逐帧率采集图片,并保留在本地。以下是采集过程。
1、装置 python 的 PIL 图像处理库
装置办法,点击此处:Win7 64 位下 Python 装置 PIL 图像处理库
2、须要装置摄像机驱动
1.、进入大恒官网
官网地址,点击此处:大恒图像官网
2、点击注册,填写信息注册胜利后,点击下载核心,找到本人应用的摄像头,以及对应的零碎,进行驱动下载安装即可
3、间接在驱动装置门路下,找到 Python SDK,而后间接在对应的目录下写脚本即可。
4、对局部罕用参数进行封装
3、实现的脚本如下
import gxipy as gx | |
from PIL import Image | |
import datetime | |
""" | |
Author:NoamaNelson | |
Date:2019-11-21 | |
Discription:Secondary development of pythonsdk of Daheng camera. | |
""" | |
def main(): | |
Width_set = 640 # 设置分辨率宽 | |
Height_set = 480 # 设置分辨率高 | |
framerate_set = 80 # 设置帧率 | |
num = 500 # 采集帧率次数(为调试用,可把后边的图像采集设置成 while 循环,进行无限度循环采集)#打印 | |
print("") | |
print("###############################################################") | |
print("间断获取彩色图像并显示获取的图像.") | |
print("###############################################################") | |
print("") | |
print("摄像机初始化......") | |
print("") | |
#创立设施 | |
device_manager = gx.DeviceManager() # 创立设施对象 | |
dev_num, dev_info_list = device_manager.update_device_list() #枚举设施,即枚举所有可用的设施 | |
if dev_num is 0: | |
print("Number of enumerated devices is 0") | |
return | |
else: | |
print("") | |
print("**********************************************************") | |
print("创立设施胜利,设施号为:%d" % dev_num) | |
#通过设施序列号关上一个设施 | |
cam = device_manager.open_device_by_sn(dev_info_list[0].get("sn")) | |
#如果是黑白相机 | |
if cam.PixelColorFilter.is_implemented() is False: # is_implemented 判断枚举型属性参数是否已实现 | |
print("该示例不反对黑白相机.") | |
cam.close_device() | |
return | |
else: | |
print("") | |
print("**********************************************************") | |
print("关上黑白摄像机胜利,SN 号为:%s" % dev_info_list[0].get("sn")) | |
#设置宽和高 | |
cam.Width.set(Width_set) | |
cam.Height.set(Height_set) | |
#设置间断采集 | |
#cam.TriggerMode.set(gx.GxSwitchEntry.OFF) # 设置触发模式 | |
cam.AcquisitionFrameRateMode.set(gx.GxSwitchEntry.ON) | |
#设置帧率 | |
cam.AcquisitionFrameRate.set(framerate_set) | |
print("") | |
print("**********************************************************") | |
print("用户设置的帧率为:%d fps"%framerate_set) | |
framerate_get = cam.CurrentAcquisitionFrameRate.get() #获取以后采集的帧率 | |
print("以后采集的帧率为:%d fps"%framerate_get) | |
#开始数据采集 | |
print("") | |
print("**********************************************************") | |
print("开始数据采集......") | |
print("") | |
cam.stream_on() | |
#采集图像 | |
for i in range(num): | |
raw_image = cam.data_stream[0].get_image() # 关上第 0 通道数据流 | |
if raw_image is None: | |
print("获取黑白原始图像失败.") | |
continue | |
rgb_image = raw_image.convert("RGB") # 从黑白原始图像获取 RGB 图像 | |
if rgb_image is None: | |
continue | |
#rgb_image.image_improvement(color_correction_param, contrast_lut, gamma_lut) # 实现图像增强 | |
numpy_image = rgb_image.get_numpy_array() # 从 RGB 图像数据创立 numpy 数组 | |
if numpy_image is None: | |
continue | |
img = Image.fromarray(numpy_image, 'RGB') # 展现获取的图像 | |
#img.show() | |
mtime = datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S') | |
img.save(r"D:\image\\" + str(i) + str("-") + mtime + ".jpg") # 保留图片到本地 | |
print("Frame ID: %d Height: %d Width: %d framerate_set:%dfps framerate_get:%dfps" | |
% (raw_image.get_frame_id(), raw_image.get_height(), raw_image.get_width(), framerate_set, framerate_get)) # 打印采集的图像的高度、宽度、帧 ID、用户设置的帧率、以后采集到的帧率 | |
#进行采集 | |
print("") | |
print("**********************************************************") | |
print("摄像机曾经进行采集") | |
cam.stream_off() | |
#敞开设施 | |
print("") | |
print("**********************************************************") | |
print("零碎提醒您:设施曾经敞开!") | |
cam.close_device() | |
if __name__ == "__main__": | |
main() |
4、运行后果
正文完