Grab#

from itala import itala

ACQUIRE_COUNT = 50

system = itala.create_system()
devices_info = system.enumerate_devices(500)
if(len(devices_info) == 0):
    print("No devices found. Example canceled.")
    exit(1)
if(devices_info[0].access_status != itala.DeviceAccessStatus_AvailableReadWrite):
    print("Target device is unaccessible in RW mode. Example cancelled.")
    exit(1)
device = system.create_device(devices_info[0])
print("First device initialized.")

# Start a default continuous acquisition. Internally, the runtime allocates a
# queue of 16 image buffers thus a maximum of 16 images can be grabbed simultaneously
# without being released. An additional overload function allows to set the
# buffer and frame count.
device.start_acquisition()
print("Acquisition started.")

# Perform a continuous acquisition by looping ACQUIRE_COUNT times and
# and grab a new image at every loop.
for i in range(ACQUIRE_COUNT):
    # Grab the first available image. If the specified
    # 1000ms timeout expires, a TimeoutException occurs. Don't forget to
    # dispose the image when it's no longer needed.
    image = device.get_next_image(1000)

    # Check if the image data is incomplete. This may happen due to packets
    # lost during transmission. Packets could get lost for many of reasons
    # resulting from an incorrect network setup, bad camera configuration,
    # poor hardware quality or inadequate conditions of the environment.
    if(image.is_incomplete):
        print("Incomplete image.")
        print("\tBytes filled: "+str(image.bytes_filled)+"/"+str(image.payload_size))
    else:
        print("Image grabbed.")

    print("\tFrameID: "+str(image.frame_id))
    print("\tTimestamp: "+str(image.timestamp))

    # DO SOMETHING WITH THE IMAGE
    
    # When the image is no longer required (e.g. when the current loop is over)
    # it MUST be disposed by calling the dedicated function. When an image is
    # disposed, its memory is released and it can be reused for a new grab.
    image.dispose()

device.stop_acquisition()
print("Acquisition stopped.")

device.dispose()
print("Device instance disposed.")

system.dispose()
print("System instance disposed.")