genicam / harvesters Goto Github PK
View Code? Open in Web Editor NEWImage Acquisition Library for GenICam-based Machine Vision System
License: Apache License 2.0
Image Acquisition Library for GenICam-based Machine Vision System
License: Apache License 2.0
Is your feature request related to a problem? Please describe.
In the current implementation, an ImageAcquisitionManager
returns None
if nothing was fetched on the fetch_buffer()
call but it seems to be something implicit and it's not so obvious.
Describe the solution you'd like
fetch_buffer(timeout=)
call, raise genicam2.gentl
's TimeoutException
when it's timed out.TimeoutException
.Describe alternatives you've considered
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
BGR formats are not special. They should be supported by the Harvester GUI.
Describe the solution you'd like
Support displaying BGR formats on the canvas.
Describe alternatives you've considered
None.
Additional context
None.
Hello,
genicam2 is listed as a dependency, but I can't seem to find this package anywhere.
Any hint on how to acquire it?
Thanks!
Is your feature request related to a problem? Please describe.
If we continuously acquire images, the buffer which one he chooses can vary. Someone would prefer to choose the oldest one but the other might prefer to choose the latest one. Maybe Harvester should support both ways.
Describe the solution you'd like
Support keep_oldest
and keep_latest
modes.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
Harvester GUI crashed when I tried to open the Attribute Controller after stopping image acquisition.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The App should not crash.
Screenshots
None.
Desktop (please complete the following information):
Additional context
None.
Is your feature request related to a problem? Please describe.
Currently clients pass a list index to core.Harvester.get_image_acquisition_agent
method to specify a device to open. However, there might be a case where the client knows a set of information to specify a single device. Harvester Core should support a way to accept such a set of information.
Describe the solution you'd like
Add parameters to core.Harvester.get_image_acquisition_agent
so that a client can list up a set of information to specify a single device to open. At least the following information must be supported:
unique_id
: DEVICE_INFO_ID
vendor
: DEVICE_INFO_VENDOR
model
: DEVICE_INFO_MODEL
tl_type
: DEVICE_INFO_TLTYPE
user_defined_name
: DEVICE_INFO_USER_DEFINED_NAME
serial_number
: DEVICE_INFO_SERIAL_NUMBER
version
: DEVICE_INFO_VERSION
Describe alternatives you've considered
None.
Additional context
None.
This is a test. We use this ticket as a sandbox.
Describe the bug
The firstly applied aspect ratio is always used. If you firstly applied 400 x 300 canvas, then it'll be used again even if you changed the ROI.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Aspect ratio must be updated every time when ROI is changed.
Is your feature request related to a problem? Please describe.
Controlling GenICam compliant devices means the host has to get a camera description XML file and it is obviously vital for any case where we want to debug.
Describe the solution you'd like
Harvester should store the XML files every time it downloaded an XML file from the target module.
Describe alternatives you've considered
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
The sleep duration between each execution of a worker thread can affect the performance of execution speed. It might be hidden from users in general but perhaps we may want to adjust the duration to optimize the performance in a particular case.
Describe the solution you'd like
Make the sleep duration configurable.
Describe alternatives you've considered
None.
Additional context
This request should be applied to only Python built-in Thread
class that is used by ImageAcquirer
class by default. On the other hand, there's no restriction for usage of ThreadBase
class so if you go implement it, you can freely design it.
Describe the bug
Harvester GUI freezes if the attribute controller is opened while it's acquiring images. It seems to be relevant to the number of nodes that has been displayed/expanded.
To Reproduce
Expected behavior
Harvester GUI must not be frozen.
Additional context
You may see the similar phenomenon when you try to expand the node tree clicking the Expand button in the toolbar in the attribute controller.
Is your feature request related to a problem? Please describe.
As of June 2018, Harvester GUI has not supported displaying any YUV format.
Describe the solution you'd like
YUV formats are more or less standard today so Harvester GUI should also support it.
I assume it can be done by implementing the demosaicing algorithm in OpenGL shading language. This should be excel at the performance point of view.
Describe alternatives you've considered
No alternatives.
Additional context
No additional context.
Is your feature request related to a problem? Please describe.
Support the following Bayer formats:
BayerGR10
BayerRG10
BayerGB10
BayerBG10
Describe the solution you'd like
Harvester GUI should support those formats.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
Attribute Controller crashes when the visibility level is changed.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Harvester GUI must not crash if the visibility level is changed.
Is your feature request related to a problem? Please describe.
It's good to make numpy.ndarray
as the default image data type of Harvester but someone may want to have it in other types such as Python's built-in bytes
.
Describe the solution you'd like
Make Image
class' data type configurable.
Describe alternatives you've considered
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
The tear_down
method of ImageAcquirer
class is not necessary and very confusing with the destroy
method.
Describe the solution you'd like
Deprecate the tear_down
method of ImageAcquirer
class.
Describe alternatives you've considered
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
Support the following Bayer formats:
BayerGR14
BayerRG14
BayerGB14
BayerBG14
Describe the solution you'd like
Harvester GUI should support those formats.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
Harvester fails to handle Coord3D
pixel formats. As a result, those pixel formats are mapped as None
.
To Reproduce
Steps to reproduce the behavior:
Coord3D
pixel format.Coord3D
pixel format.Expected behavior
Harvester must be able to handle Coord3D
pixel formats.
Screenshots
None.
Desktop (please complete the following information):
Additional context
None.
Is your feature request related to a problem? Please describe.
It's not necessary to implement the statistics measurement thrad in the Harvester Core.
Describe the solution you'd like
Get rid of the statistics measurement thread from the Harvester Core.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
The Harvester GUI can't change the value of IBoolean nodes.
To Reproduce
Steps to reproduce the behavior:
True
to an IBoolean node.False
.Expected behavior
The Harvester GUI must be able to change the value of IBoolean nodes.
Screenshots
None.
Desktop (please complete the following information):
None.
Smartphone (please complete the following information):
None.
Additional context
None.
Describe the bug
Harvester GUI abruptly displays an old image.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
It should always display consecutive images.
Is your feature request related to a problem? Please describe.
Support multibyte pixel formats.
Describe the solution you'd like
Harvester GUI should support those formats.
Describe alternatives you've considered
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
The Chunk Data feature is one of the important features that GenICam provides.
Describe the solution you'd like
Harvester Core should support the Chunk Data feature.
Describe alternatives you've considered
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
As of version 0.1.0
, Harvester Core provides clients a NumPy array that has been reshaped so that it fits to the usage of VisPy canvas. In general, however, we should provide the array in a generic shape; I mean the decision should be made by the client himself but not Harvester Core. Everything will be okay if Harvester Core provides sufficient information that is required when the client reshapes the NumPy source array to another.
Describe the solution you'd like
In general, clients go through the following steps to get the image data in an expected shape:
Width
, Height
, X Offset
, Y Offset
, or Pixel/Data Format
.So we require Component2DImage
class the following items:
data
property which returns a 1D NumPy array. This will be used as the source of the image data conversion.represent_2d_pixel_location
method in Component2DImage
class which returns a 2D NumPy array which represents just the pixel location in each row. Having that information, client may calclurate the output image.Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
Harvester GUI crashes if I try to open the attribute controller widget while it's acquiring images.
One exception is the case where I loaded TLSimu. It doesn't reproduce the phenomenon. It is reproducible only if I loaded a GenTL Producer and connected to a tangible device.
The only workaround that I know is stopping acquiring images just before opening the attribute controller. Once it appeared, you can restart acquiring images.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Harvester must keep working even if we try to open the attribute controller while it's acquiring images.
Desktop (please complete the following information):
Additional context
Add any other context about the problem here.
Is your feature request related to a problem? Please describe.
Support the following Bayer formats:
BayerGR12
BayerRG12
BayerGB12
BayerBG12
Describe the solution you'd like
Harvester GUI should support those formats.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
Harvester GUI freezes if a node is edited over the attribute controller.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Harvester GUI must not be frozen.
Is your feature request related to a problem? Please describe.
There might be a case where a top-most consumer drops images due to its performance; assuming a case where the consumer tries to get images but some of them have been dropped. To prevent such a situation Harvester Core should be able to hold an arbitrary number of images on behalf of the consumer until it turns available.
Describe the solution you'd like
Make the number of images to hold configurable.
Describe alternatives you've considered
No.
Additional context
No.
Describe the bug
Harvester GUI crashes if it's resized while it's acquiring images.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Harvester GUI must not crash even if it's resized while it's acquiring images.
Is your feature request related to a problem? Please describe.
In the current implementation, Harvester silently catches GenTL exceptions that were raised during the Harvester object tired to open the target remote device module.
If the Harvester object caught an exception, it will return a None
object for the method call and it doesn't mean anything to the users.
Describe the solution you'd like
Instead of returning a None
, Harvester should just re-throw the exception to the client and the client should decide how to handle the exception.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
HarvesterGUI sometimes slips the black image into the sequence of valid images.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
HarvesterGUI must display only valid images.
Describe the bug
The pause button is not checkable.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The pause button must be implemented as a checkable button. Once it's pushed it must stay in the pushed state and it's pushed again it must stay in the non-pushed state.
Screenshots
None.
Desktop (please complete the following information):
None.
Smartphone (please complete the following information):
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
As of June 2018, Harvester GUI has not supported displaying any 3D format.
Describe the solution you'd like
3D formats are getting popular today so Harvester GUI should also support it.
I assume it can be done by implementing the demosaicing algorithm in OpenGL shading language. This should be excel at the performance point of view.
Describe alternatives you've considered
No alternatives.
Additional context
No additional context.
Is your feature request related to a problem? Please describe.
This is just a suggestion but as of June 2018, a single Harvester Core object only supports image acquisition from a single streaming device even though it allows loading multiple GenTL Producers.
This specification covers the minimal functionality but someone may want a single Harvester Core object to acquire images from multiple devices.
Describe the solution you'd like
It might be worth supporting image acquisition from multiple streaming devices.
Describe alternatives you've considered
It's up to the decision but there should be an option to go as is. Actually having multiple Harvester Core objects gives you the same functionality.
Additional context
No additional context.
Description
Following the example on the main page:
>>> from harvesters.core import Harvester
>>> h = Harvester()
>>> h.add_cti_file("/opt/mvIMPACT_Acquire/lib/x86_64/mvGenTLProducer.cti")
>>> h.update_device_info_list()
>>> for i, info in enumerate(h.device_info_list):
... print('{0}: {1}'.format(i, info.display_name))
...
0: Point Grey Research VID1E10_PID3300_15294589
>>> h.connect_device(0)
The last function call raises the following error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/atsejaas/.local/share/miniconda3/lib/python3.6/site-packages/harvesters/core.py", line 316, in connect_device
self._encodings[encoding]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 113: ordinal not in range(128)
To Reproduce
OS: Red Hat Enterprise Linux Workstation 7.4.
The GenTL Producer: part of Matrix Visions mvIMPACT Acquire software.
Camera: Point Grey Grasshopper3 GS3-U3-23S6C.
Is your feature request related to a problem? Please describe.
Support the following Bayer16 formats:
BayerGR16
BayerRG16
BayerGB16
BayerBG16
Describe the solution you'd like
Harvester Core should support those formats.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
The Harvester GUI keeps fetching buffers while it's pausing drawing images on the canvas.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The Harvester GUI must not fetch buffers while it's pausing drawing images on the canvas.
Screenshots
None.
Desktop (please complete the following information):
None.
Additional context
None.
It would be nice if Harvester would support connecting multiple cameras. This would be useful especially in the field of spectral imaging, where multiple cameras could be controlled with the same interface (Harvester).
I would imagine that this wouldn't be too difficult to implement. Connecting the devices would happen in a usual way with the connect_device
function, but a new process would be created for the each camera to be connected. If one calls the connect_device
function with a camera that is already connected, an exception would be raised.
Is your feature request related to a problem? Please describe.
I feel the identifier, ImageAcquisitionManager, is a little bit longer. As a fact, it eventually gives us the create_image_acquisition_manager
method which is also quite long.
Describe the solution you'd like
I would like to have a shorter name such as ImageAcquirer
instead of ImageAcquisitionManager
. With this identifier, we would have the create_image_acquirer
method instead of create_image_acquisition_manager
.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
The Harvester GUI crashes if the GenTL Buffer module or the device don't support BUFFER_INFO_WIDTH
or BUFFER_INFO_HEIGHT
or a device doesn't provide the information.
To Reproduce
Steps to reproduce the behavior:
BUFFER_INFO_WIDTH
or BUFFER_INFO_HEIGHT
.Expected behavior
The Harvester GUI must support a GenTL Producer which doesn't support those commands or a device which leaves those fields blank.
Screenshots
None.
Desktop (please complete the following information):
None.
Smartphone (please complete the following information):
None.
Additional context
None.
Describe the bug
Image acquisition rate doesn't reach to the expected value we expect. It's prominence especially if the device's transmission rate is high.
To Reproduce
Steps to reproduce the behavior:
AcuiqisitionFrameRate
high as much as possible.Expected behavior
Of course, there would be a limit which depends on Harvester's performance but we should boost it by applying any possible trick.
Screenshots
None.
Device (please complete the following information):
Additional context
None.
Describe the bug
Actual acquisition frame rate is slower than the value AcquisitonFrameRate reports.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Acquisition frame rate should equal the value that is reported by AcquisitionFrameRate.
Describe the bug
Harvester Core blocks terminating the main script while it's acquiring images.
To Reproduce
Steps to reproduce the behavior:
Ctrl+c
.Expected behavior
Signaling an event such as Ctrl+c
, Harvester Core should gracefully terminate itself even if it's acquiring images or not.
Screenshots
None.
Desktop (please complete the following information):
None.
Additional context
None.
Describe the bug
I noticed that some of the GenICam features (with feature level "Recommended" and "Optional") are not present in the cameras node map. However, I'm not really sure if this is a bug or intented behaviour.
Expected behavior
I would assume that if a camera doesn't have a specific feature implemented, the access mode of the corresponding node should be either 0 or 1.
Describe the bug
The Harvester GUI displays the lower 8bit part of 16bit component formats.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The Harvester GUI must display the upper effective 8bit part of a pixel data.
Screenshots
None.
Desktop (please complete the following information):
None.
Smartphone (please complete the following information):
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
Supporting the logging feature is vital for people who those use/develop a library. Harvester should also support the logging feature.
Describe the solution you'd like
Support logging feature that relies on Python's logging
module.
Describe alternatives you've considered
None.
Additional context
None.
Describe the bug
When Harvester is initialized and ImageAcquisitionManager is created, exiting the interpreter causes a segmentation fault.
To Reproduce
Simply the following code in the interpreter will do:
>>> from harvesters.core import Harvester
>>> h = Harvester()
>>> h.add_cti_file("/path/to/cti_file")
>>> h.update_device_info_list()
>>> iam = h.create_image_acquisition_manager(0)
>>> quit()
Segmentation fault
Expected behavior
Python interpreter should be able exit without the segmentation fault.
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
As of June 2018, Harvester GUI supports displaying raw Bayer formats but doesn't support applying the appropriate demosaicing algorithm.
Describe the solution you'd like
Bayer formats are very popular today so Harvester GUI should also support it.
It'd be nice if users can switch on or off applying the demosaicing algorithm.
I assume it can be done by implementing the demosaicing algorithm in OpenGL shading language. This should be excel at the performance point of view.
Describe alternatives you've considered
No alternatives.
Additional context
No additional context.
Is your feature request related to a problem? Please describe.
We have learned logging might affect the performance on image acquisition but it's pity to not log buffer manipulation such as acquring, fetching, or queueing. Harvester Core should conditionally support logging such actions.
Describe the solution you'd like
If an environment variable HARVESTER_LOG_BUFFER_MANIPULATION
then also log the buffer manipulation.
Describe alternatives you've considered
None.
Additional context
None.
Is your feature request related to a problem? Please describe.
Shorten the method name. It's not necessary to qualify which dimension is being talked about.
Describe the solution you'd like
Use represent_pixel_location
instead.
Describe alternatives you've considered
None.
Additional context
None.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.