genicam / harvesters

Image Acquisition Library for GenICam-based Machine Vision System
Apache License 2.0
500 stars 86 forks source link

MatrixVision is now Balluff and no free GenTL Producer is available anymore #451

Open jeffwitz opened 3 months ago

jeffwitz commented 3 months ago

Describe the Issue When using the '/opt/ImpactAcquire/lib/x86_64/mvGenTLProducer.cti' 20s after the stream start, the stream is then encrypted and a box that moves on the screen tells that the trial time is passed ...

To Reproduce Steps to reproduce the behavior:

  1. Download the last version of the GenTL Producer
  2. Install it
  3. try your camera with Harvester
  4. See error

Sample Code I can show a piece of code that demonstrates the reported phenomenon:

If yes, please provide a sample code:

from harvesters.core import Harvester
import numpy as np
import cv2

h = Harvester()
h.add_file('/opt/ImpactAcquire/lib/x86_64/mvGenTLProducer.cti')
h.update()
ia = h.create()
ia.start()
ia.remote_device.node_map.ExposureTime.value = 25000
h.device_info_list

while(True):
    with ia.fetch() as buffer:
        component = buffer.payload.components[0]
        width = component.width
        height = component.height
        num_comp=component.num_components_per_pixel
        img = np.frombuffer(component.data,np.uint8).reshape((int(height),int(width)))
        img = img.copy()
    cv2.namedWindow('frame', cv2.WINDOW_NORMAL)
    cv2.imshow('frame',img[::2,::2])
    if cv2.waitKey(1) & 0xFF == ord('q'):
        ia.stop()
        ia.destroy()
        h.reset()
        cv2.destroyAllWindows()
        cap.release()
        break

If applicable, please paste the actual output (its whole traceback, etc) here:

Expected Behavior a real image to be shown

Screenshots

Configuration

Reproducibility

This phenomenon can be stably reproduced:

If applicable, please provide your observation about the reproducibility.

Actions You Have Taken I don't find another compatible GenTL Producer in any of the one you list.

Additional context Add any other context about the problem here.

jeffwitz commented 3 months ago

I test a lot of things, here a little report for people having the same issues :

None of the supplier GenTL producer work :

MVS : '/opt/MVS/lib/64/MvProducerGEV.cti' --> faillure Ximea : '/opt/XIMEA/lib/ximea.gentl.cti' and '/opt/XIMEA/lib/ximea.gentl2.cti' --> faillure Stemmer: '/opt/cvb-14.00.010/drivers/genicam/libGevTL.cti' --> faillure Pylon: '/opt/pylon/lib/gentlproducer/gtl/ProducerGEV.cti' --> faillure matrix-vision 2.50.1: '/opt/mvIMPACT_Acquire/lib/x86_64/mvGenTLProducer.cti' --> Success by restricted after 200 frames matrix-vision 2.34.1: '/opt/mvIMPACT_Acquire/lib/x86_64/mvGenTLProducer.cti' --> Success

At minimum, update the installation process to advise the last working version of matrix-vision GenTL before Balluff.

I really don't understand why all the GenTL providers failled, but I think it is an enormous issue for the project. This is absolutely not detailed in any FAQ and take a fair amount of time to investigate. I hope if someone knows how to make vendors GenTL Producer works, it will explain here to avoid any unnecessary struggle. I imagine I need software keys or USB dongle, what a pain in the neck, for just simples GigE cameras.

I really think you should work with ARAVIS in order to have a simple Open implementation that is reversed engineered, as for now, you don't provide any valid solution ,except passing hours and hours to try drivers. We also clearly see the impeachment that comes from genicam not to give access to specification for OpenSource project. I was hoping that your work will help to alleviate this difficulty, but it is always very present.

If you are interested, there is this discussion where it seems that it doesn't seem to difficult for people with genicam knowledge (not me), to solve this problem : https://aravis-project.discourse.group/t/is-aravis-attempting-to-be-a-gentl-library/268/2

sunavlis commented 3 months ago

Hi @jeffwitz

Thanks for your feedback. I have the impression, there is some frustration when you try to using harvesters. Additionally, I think you mixed up a few things in your post. I will try to help you and clarify the different components.

1. What is Harvesters:

Harvesters is a GenTL consumer which is able to collect data from a GenTL producer (usually a camera). You can see it like a GenTL producer is a *.cti file which provides a well defined API. This is provided from the camera manufacturer like an camera driver.

Thanks to the well define API, different GenTL consumers (like Harvesters) could access the cameras of different vendors through this common interface. This allows to use Harvesters with all GenICam compliant cameras through which you can configure and grab images of these cameras in your Python script.

So my recommendation is, that you may ask the vendor of your camera (HiVision) if they are GenICam compliant. If this is the case, you may ask them for there GenTL producer (*.cti). And the you would be able to collect the data from your camera within Python.

2. Your List of Faulty Producer:

Could you provide more information about the error? Most of the vendors also provide GUI based tools to test there producer. Are you able to acquire images in there tools?

At least on my side, my available producer are working as expected with Harvesters. Please understand, that I cannot reproduce your issue without additional information from your side.

jeffwitz commented 3 months ago

Hi @sunavlis ,

Thanks for this answer. Sorry if I feel frustrated.

I will try to investigate the errors that comes from the other vendors.

As mentioned in #442 , there is no valid .cti files from HikRobots. I also ask and I don't have answer yet.

What worries me, is the fact that the default solution you propose in your tutorial is not working anymore due to Balluff politicy change. I'm not sure the drivers that work, will be available in the future, it is not obvious to solve. For now

Could you suggest other GenTL Producers ? On this site they advise GenTL Producer, those are the one I try without success. The last I try and that works is matrix-vision 2.34.1