Skip to content

Instantly share code, notes, and snippets.

@jasonhejna
Created February 13, 2024 15:47
Show Gist options
  • Save jasonhejna/6a700c24d4b48eebe3e230eb8f362a08 to your computer and use it in GitHub Desktop.
Save jasonhejna/6a700c24d4b48eebe3e230eb8f362a08 to your computer and use it in GitHub Desktop.
ximea_camera.py
from ximea import xiapi
import time
#create instance for first connected camera
cam = xiapi.Camera()
#start communication
#to open specific device, use:
#cam.open_device_by_SN('41305651')
#(open by serial number)
print('Opening first camera...')
cam.open_device()
#settings
cam.set_imgdataformat('XI_MONO8')
print('Image data format: ', cam.get_imgdataformat())
cam.set_width(2448)
cam.set_height(1840)
width = cam.get_width()
height = cam.get_height()
print('Image resolution: ', width, 'x', height)
cam.set_downsampling('XI_DWN_2x2')
downsampling = cam.get_downsampling()
print('Downsampling: ', downsampling)
#cam.set_acq_timing_mode('XI_ACQ_TIMING_MODE_FRAME_RATE_LIMIT')
mode_used = cam.get_acq_timing_mode()
print('Acq timing mode: ', mode_used)
framerate = cam.get_framerate()
print('Framerate Theoretical: ', framerate)
framerate_min = cam.get_framerate_minimum()
framerate_max = cam.get_framerate_maximum()
framerate_inc = cam.get_framerate_increment()
print('Framerate range: ', framerate_min, framerate_max, framerate_inc)
cam.set_framerate(100.0) # Doesn't work on our camera
acq_timing_mode_min = cam.get_acq_timing_mode_minimum()
acq_timing_mode_max = cam.get_acq_timing_mode_maximum()
acq_timing_mode_inc = cam.get_acq_timing_mode_increment()
print('Acq timing mode range: ', acq_timing_mode_min, acq_timing_mode_max, acq_timing_mode_inc)
cam.set_exposure(10000)
print('Exposure was set to %i us' %cam.get_exposure())
downsampling_min = cam.get_downsampling_minimum()
print('Downsampling minimum: ', downsampling_min)
available_bandwidth_min = cam.get_available_bandwidth_minimum()
available_bandwidth_max = cam.get_available_bandwidth_maximum()
available_bandwidth_inc = cam.get_available_bandwidth_increment()
print('Available bandwidth range: ', available_bandwidth_min, available_bandwidth_max, available_bandwidth_inc)
buffer_policy_min = cam.get_buffer_policy_minimum()
buffer_policy_max = cam.get_buffer_policy_maximum()
buffer_policy_inc = cam.get_buffer_policy_increment()
cam.set_buffer_policy('XI_BP_SAFE')
buffer_policy = cam.get_buffer_policy()
print('Buffer policy: ', buffer_policy)
binning_selector = cam.get_binning_selector()
print('Binning selector: ', binning_selector)
#create instance of Image to store image data and metadata
img = xiapi.Image()
#start data acquisition
print('Starting data acquisition...')
cam.start_acquisition()
start_time = time.time()
for i in range(100):
#get data and pass them from camera to img
cam.get_image(img)
#get raw data from camera
#for Python2.x function returns string
#for Python3.x function returns bytes
data_raw = img.get_image_data_raw()
#transform data to list
#data = list(data_raw)
end_time = time.time()
elapsed_time = end_time - start_time
print('Acquisition Loop Elapsed time at 100 images captured: ', elapsed_time)
#stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()
#stop communication
cam.close_device()
print('Done.')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment