温州微网站制作公司哪家好,网站org免费注册,网站建设管理措施,网站建设运营推广大恒相机开发#xff08;2#xff09;—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序#xff0c;用于从大恒相机采集图像#xff0c;通过软件触发来采集图像。
完整代码
咱们直接上python的完整代码#xff1a;
# version:… 大恒相机开发2—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序用于从大恒相机采集图像通过软件触发来采集图像。
完整代码
咱们直接上python的完整代码
# version:1.0.1905.9071
import gxipy as gx
import time
from PIL import Imagedef acq_color(device, num)::brief acquisition function of color device:param device: device object[Device]:param num: number of acquisition images[int]for i in range(num):time.sleep(0.1)# send software trigger commanddevice.TriggerSoftware.send_command()# get raw imageraw_image device.data_stream[0].get_image()if raw_image is None:print(Getting image failed.)continue# get RGB image from raw imagergb_image raw_image.convert(RGB)if rgb_image is None:continue# create numpy array with data from raw imagenumpy_image rgb_image.get_numpy_array()if numpy_image is None:continue# show acquired imageimg Image.fromarray(numpy_image, RGB)img.show()# print height, width, and frame ID of the acquisition imageprint(Frame ID: %d Height: %d Width: %d% (raw_image.get_frame_id(), raw_image.get_height(), raw_image.get_width()))def acq_mono(device, num)::brief acquisition function of mono device:param device: device object[Device]:param num: number of acquisition images[int]for i in range(num):time.sleep(0.1)# send software trigger commanddevice.TriggerSoftware.send_command()# get raw imageraw_image device.data_stream[0].get_image()if raw_image is None:print(Getting image failed.)continue# create numpy array with data from raw imagenumpy_image raw_image.get_numpy_array()if numpy_image is None:continue# show acquired imageimg Image.fromarray(numpy_image, L)img.show()# print height, width, and frame ID of the acquisition imageprint(Frame ID: %d Height: %d Width: %d% (raw_image.get_frame_id(), raw_image.get_height(), raw_image.get_width()))def main():# print the demo informationprint()print(-------------------------------------------------------------)print(Sample to show how to acquire mono or color image by soft trigger and show acquired image.)print(-------------------------------------------------------------)print()print(Initializing......)print()# create a device managerdevice_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# open the first devicecam device_manager.open_device_by_index(1)# set exposurecam.ExposureTime.set(10000)# set gaincam.Gain.set(10.0)if dev_info_list[0].get(device_class) gx.GxDeviceClassList.USB2:# set trigger modecam.TriggerMode.set(gx.GxSwitchEntry.ON)else:# set trigger mode and trigger sourcecam.TriggerMode.set(gx.GxSwitchEntry.ON)cam.TriggerSource.set(gx.GxTriggerSourceEntry.SOFTWARE)# start data acquisitioncam.stream_on()# camera is color cameraif cam.PixelColorFilter.is_implemented() is True:acq_color(cam, 1)# camera is mono cameraelse:acq_mono(cam, 1)# stop acquisitioncam.stream_off()# close devicecam.close_device()if __name__ __main__:main()
详细解读和功能说明
下面是代码的详细解读和功能说明 导入必要的库 gxipy大恒相机的SDK用于控制相机。time用于在采集图像之间添加延迟。PILPython Imaging Library用于图像处理这里用于显示图像。 定义采集函数 acq_color(device, num)用于彩色相机的采集函数。acq_mono(device, num)用于单色相机的采集函数。 采集函数的共同步骤 循环num次每次采集一幅图像。time.sleep(0.1)在每次采集之间添加0.1秒的延迟。device.TriggerSoftware.send_command()发送软件触发命令告诉相机现在可以采集图像。raw_image device.data_stream[0].get_image()从相机的第一个数据流中获取原始图像。如果raw_image为None则打印错误信息并继续下一次循环。对于彩色相机rgb_image raw_image.convert(RGB)将原始图像转换为RGB格式。对于单色相机直接使用raw_image。numpy_image rgb_image.get_numpy_array()或numpy_image raw_image.get_numpy_array()将图像数据转换为numpy数组。如果numpy_image为None则跳过当前循环。img Image.fromarray(numpy_image, RGB)或img Image.fromarray(numpy_image, L)将numpy数组转换为PIL图像对象RGB’用于彩色图像L’用于单色图像。img.show()显示采集到的图像。打印采集图像的帧ID、高度和宽度。 定义main函数 打印程序信息和初始化步骤。创建设备管理对象device_manager。枚举设备并检查是否有设备连接。打开第一个设备cam。设置曝光时间cam.ExposureTime.set(10000)和增益cam.Gain.set(10.0)。根据设备类型设置触发模式对于USB2设备只设置触发模式为开启对于其他设备还需要设置触发源为软件触发。开始数据采集cam.stream_on()。检查相机是否为彩色相机并调用相应的采集函数。停止数据采集cam.stream_off()。关闭设备cam.close_device()。 程序入口 if __name__ __main__:确保当脚本被直接运行时才执行main函数。 这个程序的主要功能是初始化大恒相机设置曝光时间和增益然后通过软件触发采集一幅图像并显示采集到的图像。程序还根据相机的类型彩色或单色调用不同的采集函数。最后程序停止数据采集并关闭相机设备。 的一些信息如帧ID和帧率。 扩展学习
使用大恒相机进行图像采集时以下是一些性能优化技巧 合理设置相机参数 根据应用需求合理设置分辨率、曝光时间、增益等参数以达到最佳的图像质量和采集速度。 使用软件触发 通过软件触发来控制图像采集可以更精确地控制采集时机减少不必要的图像数据。 图像格式转换和预处理 利用大恒相机SDK提供的功能对图像进行格式转换如Bayer转RGB和预处理如红蓝转换、垂直镜像等以减少后续处理的负担。 利用回调采集提高效率 使用回调采集方式当图像就绪时自动触发处理这样可以避免轮询检查图像是否就绪的开销提高采集效率。 图像增强功能 通过图像增强功能如坏点校正、锐化、对比度、亮度调节等可以在采集阶段就优化图像质量减少后续处理的复杂度。 流对象属性控制 通过流对象控制相机采集相关的属性和统计信息可以更精细地管理采集过程提高性能。 多相机采集稳定性 对于多相机系统使用支持多路I/O输入/输出信号和丰富图像预处理功能的图像采集卡可以提高多相机采集的稳定性和效率。 使用高速接口 如果相机支持使用高速接口如CoaXPress或千兆网接口可以显著提高数据传输速度减少传输延迟。 优化代码逻辑 在图像采集的代码中避免不必要的图像复制和转换操作直接在相机端进行必要的处理可以减少CPU占用率提高整体性能。 合理管理资源 及时释放不再使用的资源如关闭数据流、注销事件回调等可以避免资源泄露保持系统的稳定性和性能。
通过上述技巧可以有效地提升大恒相机在图像采集过程中的性能和效率。