94 lines
2.5 KiB
Python
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()
|