Created
February 13, 2024 15:47
-
-
Save jasonhejna/6a700c24d4b48eebe3e230eb8f362a08 to your computer and use it in GitHub Desktop.
ximea_camera.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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