Loading
 
Support Support Home » APIs » Python

Python API

Applications in Python can access XIMEA cameras using xiAPI Python interface.
This API creates an interface with which you can fully utilize the features and capabilities of XIMEA cameras.
This Python interface supports various Python packages like OpenCV or Pillow.

Supported platforms

  • Windows
  • Linux
  • MacOS

Installation instructions

Sample code:

The Ximea Python package may be used in a script in the following way:

from ximea import xiapi

#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_exposure(10000)
print('Exposure was set to %i us' %cam.get_exposure())

#create instance of Image to store image data and metadata
img = xiapi.Image()

#start data acquisition
print('Starting data acquisition...')
cam.start_acquisition()

for i in range(10):
    #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)

    #print image data and metadata
    print('Image number: ' + str(i))
    print('Image width (pixels):  ' + str(img.width))
    print('Image height (pixels): ' + str(img.height))
    print('First 10 pixels: ' + str(data[:10]))
    print('\n')    

#stop data acquisition
print('Stopping acquisition...')
cam.stop_acquisition()

#stop communication
cam.close_device()

print('Done.')

XIMEA Python syntax

The various xiAPI parameters can be set or readout using XIMEA Python functions which are generated from the constant string definitions of the xiAPI parameters.

Nonboolean parameters

Prefixes get_ and set_ are added to constant string definition the following way:
For parameter XI_PRM_EXPOSURE, "exposure" is the constant string, therefor Python XIMEA API contains functions get_exposure() and set_exposure():

cam.set_exposure(10000)
print('Exposure was set to %s us.' %cam.get_exposure())

and the output will be:

Exposure was set to 9996 us. 

Boolean parameters

Same logic is used for boolean parameters, where prefixes is_, enable_ and disable_ are used the following way:
For parameter XI_PRM_HORIZONTAL_FLIP, "horizontal_flip" is the constant string, therefor Python XIMEA API contains functions is_horizontal_flip(), enable_horizontal_flip() and disable_horizontal_flip():

print('Is horizontal flip enabled?')
print(cam.is_horizontal_flip())

print('Enabling horizontal flip...')
cam.enable_horizontal_flip()
print(cam.is_horizontal_flip())

print('Disabling horizontal flip...')
cam.disable_horizontal_flip()
print(cam.is_horizontal_flip())

and the output will be:

Is horizontal flip enabled?
False.
Enabling horizontal flip...
True.
Disabling horizontal flip...
False.

Common interface

For setting or getting parameters can be used get_param(arg) and set_param(arg) functions, where as arg is used the constant string of specific parameter the following way:

cam.set_param("exposure",10000)
// is the same as
cam.set_exposure(10000)

Both approaches are valid.

Example applications

There are several applications, that may be found in the xiApiPython examples/ folder.
Here you may find various examples for xiApiPython, OpenCV, or Pillow packages.

Note

The Python v3. supports examples only from pillow and various folder.