明天应用到了大恒的USB工业相机,须要逐帧率采集图片,并保留在本地。以下是采集过程。

1、装置python的PIL图像处理库

装置办法,点击此处:Win7 64位下Python装置PIL图像处理库

2、须要装置摄像机驱动

1.、进入大恒官网
官网地址,点击此处:大恒图像官网

2、点击注册,填写信息注册胜利后,点击下载核心,找到本人应用的摄像头,以及对应的零碎,进行驱动下载安装即可

3、间接在驱动装置门路下,找到Python SDK,而后间接在对应的目录下写脚本即可。

4、对局部罕用参数进行封装

3、实现的脚本如下

import gxipy as gxfrom PIL import Imageimport datetime"""Author:NoamaNelsonDate:2019-11-21Discription: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、运行后果