from ximea import xiapi import numpy as np cam = xiapi.Camera() cam.open_device() # self.cam.set_width(1392) # cam.set_offsetX(272) # # cam.set_height(302) # cam.set_offsetY(338) # Serial number = 0031 cam.set_width(1392) cam.set_offsetX(272) cam.set_height(302) cam.set_offsetY(406) framerate=20 cam.set_framerate(framerate) # cam.set_aeag_roi_offset_x(self.config_file_object.start_column) # cam.set_aeag_roi_offset_y(self.config_file_object.start_row) # cam.set_aeag_roi_height(self.config_file_object.end_row - self.config_file_object.start_row) # cam.set_aeag_roi_width(self.config_file_object.end_column - self.config_file_object.start_column) img = xiapi.Image() # 使用相机自动曝光功能得到初始曝光值 cam.enable_aeag() # 开启自动曝光 cam.start_acquisition() for i in range(10): cam.get_image(img) # get data and pass them from camera to img cam.stop_acquisition() cam.disable_aeag() # 关闭自动曝光 # 根据自动曝光所得初始曝光值,循环迭代获取不过曝的曝光值 img.get_image_data_numpy() image_raw_numpy = img.get_image_data_numpy() while image_raw_numpy.max() >= 2730: cam.set_exposure(int(0.9 * cam.get_exposure())) cam.start_acquisition() cam.get_image(img) # get data and pass them from camera to img cam.stop_acquisition() image_raw_numpy = img.get_image_data_numpy() # 如果因为光线不足曝光值达到了最大,就将曝光反馈变量设置为1 if cam.get_exposure() > int(1 / framerate * 10**6): cam.set_exposure(int(1 / framerate * 10**6)) autoexposure_feedback = 1 else: cam.set_exposure(cam.get_exposure()) haha=cam.get_exposure()