st-ten-1/src/test/galaxy_camera_windows.py
2022-10-07 22:34:11 +02:00

94 lines
2.5 KiB
Python

# version:1.0.1905.9051
import time
from src.components import gxipy as gx
from PIL import Image
def main():
print("Initializing......")
# create a device manager
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
# open the first device
cam = device_manager.open_device_by_index(1)
# exit when the camera is a mono camera
if cam.PixelColorFilter.is_implemented() is False:
print("This sample does not support mono camera.")
cam.close_device()
return
# set continuous acquisition
cam.TriggerMode.set(gx.GxSwitchEntry.OFF)
# set exposure
cam.ExposureTime.set(10000.0)
# set gain
cam.Gain.set(10.0)
# get param of improving image quality
if cam.GammaParam.is_readable():
gamma_value = cam.GammaParam.get()
gamma_lut = gx.Utility.get_gamma_lut(gamma_value)
else:
gamma_lut = None
if cam.ContrastParam.is_readable():
contrast_value = cam.ContrastParam.get()
contrast_lut = gx.Utility.get_contrast_lut(contrast_value)
else:
contrast_lut = None
if cam.ColorCorrectionParam.is_readable():
color_correction_param = cam.ColorCorrectionParam.get()
else:
color_correction_param = 0
# start data acquisition
cam.stream_on()
time.sleep(0.1)
# acquisition image: num is the image number
num = 10
for i in range(num):
# get raw image
raw_image = cam.data_stream[0].get_image()
time.sleep(0.1)
if raw_image is None:
print("Getting image failed.")
continue
# get RGB image from raw image
rgb_image = raw_image.convert("RGB")
if rgb_image is None:
continue
# improve image quality
rgb_image.image_improvement(color_correction_param, contrast_lut, gamma_lut)
# create numpy array with data from raw image
numpy_image = rgb_image.get_numpy_array()
if numpy_image is None:
continue
# show acquired image
img = Image.fromarray(numpy_image, 'RGB')
img.show()
# print height, width, and frame ID of the acquisition image
print("Frame ID: %d Height: %d Width: %d"
% (raw_image.get_frame_id(), raw_image.get_height(), raw_image.get_width()))
# stop data acquisition
cam.stream_off()
# close device
cam.close_device()
if __name__ == "__main__":
main()