当前位置: 首页 > article >正文

python大恒相机保存RAW图和实时显示

一、用python进行采集
临时有个任务需要进行数据采集

二、直接上代码

import gxipy as gx
import cv2
import numpy as np

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

    # 枚举设备
    dev_num, dev_info_list = device_manager.update_device_list()
    print(dev_info_list)
    if dev_num == 0:
        print("没有找到设备")
        return

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

    # # 设置相机参数
    # cam.ExposureTime.set(500)  # 设置曝光时间
    # cam.Gain.set(1.0)  # 设置增益
    exposure_time = 230000  # 例如,设置为10000微秒(10毫秒)
    cam.ExposureTime.set(exposure_time)
    # 获取当前曝光时间以确认设置成功
    current_exposure_time = cam.ExposureTime.get()
    print(f"当前曝光时间: {current_exposure_time} 微秒")

    # 开始采集
    cam.stream_on()
    # 2592*2048
    try:
        while True:

            # 设置曝光时间(单位:微秒)

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

            if raw_image is None:
                continue
            # 将RAW图像数据转换为numpy数组
            raw_image_np = raw_image.get_numpy_array()
            # 从彩色原始图像获取 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.namedWindow('Real-Time Image', cv2.WINDOW_NORMAL)
            # 显示图像
            cv2.imshow("Real-Time Image", bgr_image)

            # 按下 'q' 键退出循环
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
            elif cv2.waitKey(1) & 0xFF == ord('s'):
                cv2.imwrite('saved_image.png', bgr_image)
                # 保存RAW图像
                raw_image_np.tofile("raw_image_2856_470_23_G15.raw")
                print("RAW图像已保存为 raw_image.raw")

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

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

if __name__ == "__main__":
    main()

http://www.kler.cn/a/549426.html

相关文章:

  • Java ArrayList(单列集合)
  • 【CUDA】Pytorch_Extensions
  • 数据仓库与数据挖掘记录 二
  • 【Azure 架构师学习笔记】- Azure Databricks (11) -- UC搭建
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析③】
  • Linux:深入了解进程信号(上)
  • DeepSeek与ChatGPT:AI语言模型的全面对决
  • 生成式大模型 怎么结合 知识库与 AI Agent
  • windows配置永久路由
  • Java运维实战:问题定位-CPU突增排查
  • 【动态规划】斐波那契数列模型
  • 聚铭网络入围2025年度江苏省政府采购信息安全设备协议供货名单
  • 【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十七节】
  • 【LeetCode Hot100 矩阵】矩阵置零、螺旋矩阵、旋转图像、搜索二维矩阵II
  • matlab 柴油机冷却系统仿真计算
  • Python 自然语言处理(NLP)和文本挖掘的常规操作过程
  • PHP在线题库小程序
  • Large Language Model Distilling Medication Recommendation Model
  • CPP集群聊天服务器开发实践(四):客户端开发与功能测试
  • Spring Boot01(注解、)---java八股