使用大恒USB工业相机PythonSDK进行逐帧率图片采集

简介: 使用大恒USB工业相机PythonSDK进行逐帧率图片采集

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

今天使用到了大恒的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、运行结果

在这里插入图片描述
在这里插入图片描述

目录
相关文章
|
9月前
|
监控 测试技术 计算机视觉
Baumer工业相机堡盟相机如何测试相机是否丢帧、网卡是否可用
Baumer工业相机堡盟相机如何测试相机是否丢帧、网卡是否可用
89 0
|
9月前
Baumer万兆网工业相机堡盟相机Gige网口连接PC如何实现最大帧率
Baumer万兆网工业相机堡盟相机Gige网口连接PC如何实现最大帧率
85 0
|
9月前
|
安全 机器人 数据处理
Baumer工业相机堡盟相机不满帧如何使用CameraExplorer设置相机参数让它的帧率达到满帧
Baumer工业相机堡盟相机不满帧如何使用CameraExplorer设置相机参数让它的帧率达到满帧
192 0
|
9月前
|
开发工具 C++ 计算机视觉
Baumer工业相机堡盟相机BGAPI SDK如何实现显示相机帧率和网口数据通量(C++)
Baumer工业相机堡盟相机BGAPI SDK如何实现显示相机帧率和网口数据通量(C++)
61 0
|
9月前
|
存储 XML API
Baumer工业相机堡盟相机使用CameraExplorer软件进行相机参数保存与 UserSet参数设置
Baumer工业相机堡盟相机使用CameraExplorer软件进行相机参数保存与 UserSet参数设置
137 0
|
9月前
|
监控 数据可视化 计算机视觉
Baumer工业相机堡盟相机如何使用CameraExplorer查看相机图像Buffer以及图像数据传输流统计信息
Baumer工业相机堡盟相机如何使用CameraExplorer查看相机图像Buffer以及图像数据传输流统计信息
73 0
Baumer工业相机堡盟相机如何使用CameraExplorer查看相机图像Buffer以及图像数据传输流统计信息
|
9月前
|
安全 计算机视觉
Baumer相机baumer相机USB相机使用时出现USB驱动安装失败,导致相机无法使用
Baumer相机baumer相机USB相机使用时出现USB驱动安装失败,导致相机无法使用
93 0
|
9月前
|
传感器 人工智能 监控
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置自动亮度调整BrightnessAuto(自动曝光自动增益)(C++)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置自动亮度调整BrightnessAuto(自动曝光自动增益)(C++)
72 0
|
9月前
|
监控 UED
Baumer工业相机堡盟相机LX系列和CX系列的温度监控设置
Baumer工业相机堡盟相机LX系列和CX系列的温度监控设置
48 0
|
9月前
|
存储 数据采集 编解码
Baumer工业相机堡盟工业相机如何通过图像尺寸计算图像大小从而计算当前相机传输帧率(C#)
Baumer工业相机堡盟工业相机如何通过图像尺寸计算图像大小从而计算当前相机传输帧率(C#)
74 0
http://www.vxiaotou.com