大恒图像工业相机使用python实时显示图片采集

需要安装摄像机驱动

进入官网,点击注册,填写信息注册成功后,点击下载中心,找到自己使用的摄像头,以及对应的系统,进行驱动下载安装即可

直接在驱动安装路径下,找到Python SDK,这个就是后面写代码需要用到的库。放到Library文件夹指定位置。之后调用就好。

这里找到一个开源,功能就是截取一张图。

import gxipy as gx
import matplotlib.pyplot as plt 

# 枚举设备。
# dev_info_list 是设备信息列表,列表的元素个数为枚举到的设备个数,列表元素是字典,其中包含设备索引(index)、ip 信息(ip)等设备信息
device_manager = gx.DeviceManager()
dev_num, dev_info_list = device_manager.update_device_list()
if dev_num == 0:
    sys.exit(1)
# 打开设备
# 获取设备基本信息列表
str_sn = dev_info_list[0].get("sn")
# 通过序列号打开设备
cam = device_manager.open_device_by_sn(str_sn)
# 开始采集
cam.stream_on()
# 获取流通道个数
# 如果 int_channel_num == 1,设备只有一个流通道,列表 data_stream 元素个数为 1
# 如果 int_channel_num > 1,设备有多个流通道,列表 data_stream 元素个数大于 1
# 目前千兆网相机、USB3.0、USB2.0 相机均不支持多流通道。
# int_channel_num = cam.get_stream_channel_num()

# 获取数据
# num 为采集图片次数
num = 1
for i in range(num):
    # 从第 0 个流通道获取一幅图像
    raw_image = cam.data_stream[0].get_image()
    # 从彩色原始图像获取 RGB 图像
    rgb_image = raw_image.convert("RGB")
    if rgb_image is None:
        continue
    # 从 RGB 图像数据创建 numpy 数组
    numpy_image = rgb_image.get_numpy_array()
    if numpy_image is None:
        continue
    # 显示并保存获得的 RGB 图片
    plt.imshow(numpy_image)
    plt.show()
    
# 停止采集,关闭设备
cam.stream_off()
cam.close_device()

根据上面的这个写了一个可以实时获取图像的demo。你可以在这个基础上加入对视频,图片的获取。

import gxipy as gx
import cv2
import numpy as np

# 初始化设备管理器
device_manager = gx.DeviceManager()

# 枚举设备,返回设备数量和设备信息列表
dev_num, dev_info_list = device_manager.update_device_list()
if dev_num == 0:
    print("No devices found")
    sys.exit(1)

# 获取第一个设备的序列号并打开设备
str_sn = dev_info_list[0].get("sn")
cam = device_manager.open_device_by_sn(str_sn)

# 开始采集
cam.stream_on()

try:
    while True:
        # 从第 0 个流通道获取一幅图像
        raw_image = cam.data_stream[0].get_image()

        if raw_image is None:
            continue
        
        # 从彩色原始图像获取 RGB 图像
        rgb_image = raw_image.convert("RGB")
        
        if rgb_image is None:
            continue
        
        # 从 RGB 图像数据创建 numpy 数组
        numpy_image = rgb_image.get_numpy_array()
        
        if numpy_image is None:
            continue
        
        # 将图像从 RGB 转换为 BGR,因为 OpenCV 使用 BGR 格式
        bgr_image = cv2.cvtColor(numpy_image, cv2.COLOR_RGB2BGR)
        
        # 显示图像
        cv2.imshow("Real-Time Image", bgr_image)
        
        # 按下 'q' 键退出循环
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

finally:
    # 停止采集并关闭设备
    cam.stream_off()
    cam.close_device()

    # 关闭所有 OpenCV 窗口
    cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值