harvesters.core
index
c:\users\space rangers\.conda\envs\genicam\lib\site-packages\harvesters\core.py

# ----------------------------------------------------------------------------
#
# Copyright 2018 EMVA
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# ----------------------------------------------------------------------------

 
Modules
       
io
numpy
os
pathlib
signal
sys
time
weakref
zipfile

 
Classes
       
builtins.object
Buffer
ComponentBase
Component2DImage
ComponentUnknown
Harvester
ImageAcquirer
MutexLocker
PayloadBase
PayloadChunkOnly
PayloadFile
PayloadH264
PayloadImage
PayloadJPEG
PayloadJPEG2000
PayloadMultiPart
PayloadRawData
PayloadUnknown
ThreadBase

 
class Buffer(builtins.object)
    Buffer(*, buffer=None, node_map=None, logger=None)
 
Is provided by an :class:`ImageAcquire` object when you call its
:meth:`~harvesters.core.ImageAcquirer.fetch_buffer` method. It provides
you a way to access acquired data and its relevant information.
 
Note that it will never be necessary to create this object by yourself
in general.
 
  Methods defined here:
__enter__(self)
__exit__(self, exc_type, exc_val, exc_tb)
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:
__repr__(self)
Return repr(self).
queue(self)
Queues the buffer to prepare for the upcoming image acquisition. Once
the buffer is queued, the :class:`Bufferobject will be obsolete.
You'll have nothing to do with it.
 
Note that you have to return the ownership of the fetched buffers to
the :class:`ImageAcquirerobject before stopping image acquisition
calling this method because the :class:`ImageAcquirerobject tries
to clear the self-allocated buffers when it stops image acquisition.

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
payload
:return: A containing object which derives from :class:`PayloadBase` class.
payload_type
:return: The payload type that the :class:`Buffer` object contains.
timestamp
:return: The timestamp in the TL specific unit.
timestamp_frequency
:return: The timestamp frequency which is used to represent a timestamp.
timestamp_ns
:return: The timestamp in nano-second.

 
class Component2DImage(ComponentBase)
    Component2DImage(*, buffer=None, part=None, node_map=None, logger=None)
 
Represents a data component that is classified as
:const:`PART_DATATYPE_2D_IMAGE` by the GenTL Standard.
 
 
Method resolution order:
Component2DImage
ComponentBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, part=None, node_map=None, logger=None)
:param buffer:
:param part:
:param node_map:
__repr__(self)
Return repr(self).
represent_pixel_location(self)
Returns a NumPy array that represents the 2D pixel location,
which is defined by PFNC, of the original image data.
 
You may use the returned NumPy array for a calculation to map the
original image to another format.
 
:return: A NumPy array that represents the 2D pixel location.

Data descriptors defined here:
data_format
:return: The data type of the data component as string.
data_format_value
:return: The data type of the data component as integer value.
delivered_image_height
:return: The image height of the data component.
height
:return: The height of the data component in the buffer in number of pixels.
num_components_per_pixel
:return: The number of data components per pixel.
width
:return: The width of the data component in the buffer in number of pixels.
x_offset
:return: The X offset of the data in the buffer in number of pixels from the image origin to handle areas of interest.
x_padding
Returns
:return: The X padding of the data component in the buffer in number of pixels.
y_offset
:return: The Y offset of the data in the buffer in number of pixels from the image origin to handle areas of interest.
y_padding
:return: The Y padding of the data component in the buffer in number of pixels.

Data descriptors inherited from ComponentBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
data
:return: The component data.
data_format_namespace
:return: The data type namespace of the data component.
source_id
:return: The source ID of the data component.

 
class ComponentBase(builtins.object)
    ComponentBase(*, buffer=None)
 
Is a base class of various data component types.
 
  Methods defined here:
__init__(self, *, buffer=None)
:param buffer:

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
data
:return: The component data.
data_format
:return: The data type of the data component.
data_format_namespace
:return: The data type namespace of the data component.
source_id
:return: The source ID of the data component.

 
class ComponentUnknown(ComponentBase)
    Represents a data component that is classified as
:const:`PART_DATATYPE_UNKNOWN` by the GenTL Standard.
 
 
Method resolution order:
ComponentUnknown
ComponentBase
builtins.object

Methods defined here:
__init__(self)
:param buffer:

Data descriptors inherited from ComponentBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
data
:return: The component data.
data_format
:return: The data type of the data component.
data_format_namespace
:return: The data type namespace of the data component.
source_id
:return: The source ID of the data component.

 
class Harvester(builtins.object)
    Harvester(*, profile=False, logger=None)
 
Is the class that works for you as Harvester Core. Everything begins with
this class.
 
  Methods defined here:
__enter__(self)
__exit__(self, exc_type, exc_val, exc_tb)
__init__(self, *, profile=False, logger=None)
:param profile:
:param logger:
add_cti_file(self, file_path: str)
Adds a CTI file to work with to the CTI file list.
 
:param file_path: Set a file path to the target CTI file.
 
:return: None.
create_image_acquirer(self, list_index=None, *, id_=None, vendor=None, model=None, tl_type=None, user_defined_name=None, serial_number=None, version=None, sleep_duration=1e-06, file_path=None, privilege='exclusive')
Creates an image acquirer for the specified remote device and return
the created :class:`ImageAcquirerobject.
 
:param list_index: (Optional) Set an item index of the list of :class:`DeviceInfo` objects.
:param id_: (Optional) Set an index of the device information list.
:param vendor: (Optional) Set a vendor name of the target device.
:param model: (Optional) Set a model name of the target device.
:param tl_type: (Optional) Set a transport layer type of the target device.
:param user_defined_name: (Optional) Set a user defined name string of the target device.
:param serial_number: (Optional) Set a serial number string of the target device.
:param version: (Optional) Set a version number string of the target device.
:param sleep_duration: (Optional) Set a sleep duration in second that is inserted after the image acquisition worker is executed.
:param file_path: (Optional) Set a path to camera description file which you want to load on the target node map instead of the one which the device declares.
:param privilege: (Optional) Set an access privilege. `exclusive`, `contorl`, and `read_only` are supported. The default is `exclusive`.
 
:return: An :class:`ImageAcquirerobject that associates with the specified device.
 
Note that you have to close it when you are ready to release the
device that you have been controlled. As long as you hold it, the
controlled device will be not available from other clients.
remove_cti_file(self, file_path: str)
Removes the specified CTI file from the CTI file list.
 
:param file_path: Set a file path to the target CTI file.
 
:return: None.
remove_cti_files(self)
Removes all CTI files in the CTI file list.
 
:return: None.
reset(self)
update_device_info_list(self)
Updates the device information list. You'll have to call this method
every time you added CTI files or plugged/unplugged devices.
 
:return: None.

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
cti_files
:return: A :class:`list` object containing :class:`str` objects.
device_info_list
:return: A :class:`list` object containing :class:`DeviceInfo` objects
has_revised_device_info_list
timeout_for_update

 
class ImageAcquirer(builtins.object)
    ImageAcquirer(*, parent=None, device=None, profiler=None, logger=None, sleep_duration=1e-06, file_path=None)
 
Manages everything you need to acquire images from the connecting device.
 
  Methods defined here:
__enter__(self)
__exit__(self, exc_type, exc_val, exc_tb)
__init__(self, *, parent=None, device=None, profiler=None, logger=None, sleep_duration=1e-06, file_path=None)
:param parent:
:param device:
:param profiler:
:param logger:
:param sleep_duration:
:param file_path: (Optional) Set a path to camera description file which you want to load on the target node map instead of the one which the device declares.
destroy(self)
fetch_buffer(self, *, timeout=0, is_raw=False)
Fetches the latest :class:`Bufferobject and returns it.
 
:param timeout: Set timeout value in second.
:param is_raw: Set :const:`True` if you need a raw GenTL Buffer module.
 
:return: A :class:`Bufferobject.
start_image_acquisition(self)
Starts image acquisition.
 
:return: None.
stop_image_acquisition(self)
Stops image acquisition.
 
:return: None.

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
device
:return: The proxy :class:`Device` module object of the connecting remote device.
interface
:return: The parent :class:`Interface` module object of the connecting remote device.
is_acquiring_images
:return: :const:`True` if it's acquiring images. Otherwise :const:`False`.
keep_latest
min_num_buffers
num_buffers
num_filled_buffers_to_hold
num_holding_filled_buffers
on_new_buffer_arrival
signal_stop_image_acquisition
statistics
system
:return: The parent :class:`System` module object of the connecting remote device.
thread_image_acquisition
timeout_for_image_acquisition

 
class MutexLocker(builtins.object)
    MutexLocker(thread: harvesters.core.ThreadBase = None)
 

 
  Methods defined here:
__enter__(self)
__exit__(self, exc_type, exc_val, exc_tb)
__init__(self, thread: harvesters.core.ThreadBase = None)
:param thread:

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class PayloadBase(builtins.object)
    PayloadBase(*, buffer=None, logger=None)
 
Is a base class of various payload types. The types are defined by the
GenTL Standard.
 
  Methods defined here:
__init__(self, *, buffer=None, logger=None)
:param buffer:
:param logger:

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadChunkOnly(PayloadBase)
    PayloadChunkOnly(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as
:const:`PAYLOAD_TYPE_CHUNK_ONLY` by the GenTL Standard.
 
 
Method resolution order:
PayloadChunkOnly
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param logger:

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadFile(PayloadBase)
    PayloadFile(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as :const:`PAYLOAD_TYPE_FILE` by
the GenTL Standard.
 
 
Method resolution order:
PayloadFile
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadH264(PayloadBase)
    PayloadH264(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as :const:`PAYLOAD_TYPE_H264` by
the GenTL Standard.
 
 
Method resolution order:
PayloadH264
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadImage(PayloadBase)
    PayloadImage(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as :const:`PAYLOAD_TYPE_IMAGE` by
the GenTL Standard.
 
 
Method resolution order:
PayloadImage
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:
__repr__(self)
Return repr(self).

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadJPEG(PayloadBase)
    PayloadJPEG(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as :const:`PAYLOAD_TYPE_JPEG` by
the GenTL Standard.
 
 
Method resolution order:
PayloadJPEG
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadJPEG2000(PayloadBase)
    PayloadJPEG2000(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as :const:`PAYLOAD_TYPE_JPEG2000`
by the GenTL Standard.
 
 
Method resolution order:
PayloadJPEG2000
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadMultiPart(PayloadBase)
    PayloadMultiPart(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as
:const:`PAYLOAD_TYPE_MULTI_PART` by the GenTL Standard.
 
 
Method resolution order:
PayloadMultiPart
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:
__repr__(self)
Return repr(self).

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadRawData(PayloadBase)
    PayloadRawData(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as :const:`PAYLOAD_TYPE_RAW_DATA`
by the GenTL Standard.
 
 
Method resolution order:
PayloadRawData
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class PayloadUnknown(PayloadBase)
    PayloadUnknown(*, buffer=None, node_map=None, logger=None)
 
Represents a payload that is classified as :const:`PAYLOAD_TYPE_UNKNOWN`
by the GenTL Standard.
 
 
Method resolution order:
PayloadUnknown
PayloadBase
builtins.object

Methods defined here:
__init__(self, *, buffer=None, node_map=None, logger=None)
:param buffer:
:param node_map:
:param logger:

Data descriptors inherited from PayloadBase:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
components
:return: A :class:`list` containing objects that derive from :const:`ComponentBase` class.
payload_type
TODO:
:return:

 
class ThreadBase(builtins.object)
    ThreadBase(*, mutex=None, logger=None)
 
By default, :class:`ImageAcquirer` class internally uses Python's
built-in :mod:`threading` module. However, you may want to use your
preferred threading module such as :class:`QThread` of PyQt for some
technical reasons. To allow us your preferred threading module, Harvester
provides you a base proxy class to allow you implementing your threading
functionality.
 
  Methods defined here:
__init__(self, *, mutex=None, logger=None)
:param mutex:
:param logger:
acquire(self)
This method is abstract and should be reimplemented in any sub-class.
 
Acquires a mutex.
 
:return: None.
release(self)
This method is abstract and should be reimplemented in any sub-class.
 
Releases the acquired mutex.
 
:return: None.
start(self)
:return: None.
stop(self)
This method is abstract and should be reimplemented in any sub-class.
 
Stops its worker running.
 
:return: None.

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)
id_
This method is abstract and should be reimplemented in any sub-class.
 
:return: None.
is_running
:return: :const:`True` if the worker is still running. Otherwise :const:`False`.
mutex
This method is abstract and should be reimplemented in any sub-class.
 
:return: None.
worker
This method is abstract and should be reimplemented in any sub-class.
 
:return: None.

 
Functions
       
Lock = allocate_lock(...)
allocate_lock() -> lock object
(allocate() is an obsolete synonym)
 
Create a new lock object. See help(type(threading.Lock())) for
information about locks.

 
Data
        bayer_location_formats = ['BayerGR8', 'BayerRG8', 'BayerGB8', 'BayerBG8', 'BayerGR10', 'BayerRG10', 'BayerGB10', 'BayerBG10', 'BayerGR12', 'BayerRG12', 'BayerGB12', 'BayerBG12', 'BayerGR16', 'BayerRG16', 'BayerGB16', 'BayerBG16']
component_2d_formats = ['Mono8', 'Mono10', 'Mono12', 'Mono14', 'Mono16', 'RGB8', 'RGB10', 'RGB12', 'RGB14', 'RGB16', 'BGR8', 'BGR10', 'BGR12', 'BGR14', 'BGR16', 'RGBa8', 'RGBa10', 'RGBa12', 'RGBa14', 'RGBa16', ...]
float32_formats = ['Coord3D_A32f', 'Coord3D_B32f', 'Coord3D_C32f', 'Coord3D_ABC32f', 'Coord3D_ABC32f_Planar', 'Coord3D_AC32f', 'Coord3D_AC32f_Planar', 'Confidence32f']
lmn_411_location_formats = ['YUV411_8_UYYVYY', 'YCbCr411_8_CbYYCrYY', 'YCbCr601_411_8_CbYYCrYY', 'YCbCr709_411_8_CbYYCrYY', 'YCbCr411_8', 'YCbCr2020_411_8_CbYYCrYY']
lmn_422_location_formats = ['YUV422_8_UYVY', 'YUV422_8', 'YCbCr422_8', 'YCbCr601_422_8', 'YCbCr709_422_8', 'YCbCr422_8_CbYCrY', 'YCbCr601_422_8_CbYCrY', 'YCbCr709_422_8_CbYCrY', 'YCbCr422_10', 'YCbCr422_12', 'YCbCr601_422_10', 'YCbCr601_422_12', 'YCbCr709_422_10', 'YCbCr709_422_12', 'YCbCr422_10_CbYCrY', 'YCbCr422_12_CbYCrY', 'YCbCr601_422_10_CbYCrY', 'YCbCr601_422_12_CbYCrY', 'YCbCr709_422_10_CbYCrY', 'YCbCr709_422_12_CbYCrY', ...]
lmn_444_location_formats = ['RGB8', 'RGB10', 'RGB12', 'RGB14', 'RGB16', 'BGR8', 'BGR10', 'BGR12', 'BGR14', 'BGR16', 'Coord3D_ABC8', 'Coord3D_ABC8_Planar', 'Coord3D_ABC16', 'Coord3D_ABC16_Planar', 'Coord3D_ABC32f', 'Coord3D_ABC32f_Planar']
lmno_4444_location_formats = ['RGBa8', 'RGBa10', 'RGBa12', 'RGBa14', 'RGBa16', 'BGRa8', 'BGRa10', 'BGRa12', 'BGRa14', 'BGRa16']
mono_location_formats = ['Mono8', 'Mono8s', 'Mono10', 'Mono12', 'Mono14', 'Mono16', 'R8', 'R10', 'R12', 'R16', 'G8', 'G10', 'G12', 'G16', 'B8', 'B10', 'B12', 'B16', 'Coord3D_A8', 'Coord3D_B8', ...]
symbolics = {16842807: 'Mono1p', 16842949: 'Confidence1p', 16908344: 'Mono2p', 17039417: 'Mono4p', 17301505: 'Mono8', 17301506: 'Mono8s', 17301512: 'BayerGR8', 17301513: 'BayerRG8', 17301514: 'BayerGB8', 17301515: 'BayerBG8', ...}
uint16_formats = ['Mono10', 'Mono12', 'Mono14', 'Mono16', 'RGB10', 'RGB12', 'RGB14', 'RGB16', 'BGR10', 'BGR12', 'BGR14', 'BGR16', 'RGBa10', 'RGBa12', 'RGBa14', 'RGBa16', 'BGRa10', 'BGRa12', 'BGRa14', 'BGRa16', ...]
uint32_formats = ['Mono32']
uint8_formats = ['Mono8', 'RGB8', 'RGB8Packed', 'RGBa8', 'BGR8', 'BGRa8', 'BayerGR8', 'BayerGB8', 'BayerRG8', 'BayerBG8', 'Coord3D_A8', 'Coord3D_B8', 'Coord3D_C8', 'Coord3D_ABC8', 'Coord3D_ABC8_Planar', 'Coord3D_AC8', 'Coord3D_AC8_Planar', 'Confidence1', 'Confidence8']