behavior of grab() after select timeout

asked 2019-06-13 15:26:06 -0600

I am using OpenCV in Java, using a USB "TheImagingSource" DFK 23U618. I'm having a difficult time determining where the problem is, and am talking to their technical support. It's either the UVC driver, the camera, or OpenCV. I do have a small project that demonstrates the problem. Is Github a good way of sharing it to this forum?

The problem is that I need the camera in hardware trigger mode to synchronize to a machine. I launch a thread that calls VideoCapture.read(), and this all works great until the machine slows down, and the time between hardware triggers exceeds about 6.2 seconds. When this happens, grab() prints (I think) to STDERR, "select timeout". Once this happens, no more images can be read from the camera. The application must be exited, and the camera replugged.

I also have an ELP USB camera, and it works fine with my software, but doesn't have a digital trigger, so I can't compare across cameras. I am willing to test this with another brand of triggerable camera providing it doesn't cost too much.

Any thoughts on where I should look? The test application for the camera works without problems. It is not an OpenCV app, and I don't know how it accesses the camera, or if it uses the UVC driver.

An update: I just ran qv4l2, and checked the trigger box that shows up because of the UVC extensions installed by the tiscamera package. I get this segfault: michalk@michalk-desktop:~/git$ qv4l2 Jun 13 15:23:47 michalk-desktop kernel: [ 2281.940938] qv4l2[7735]: segfault at 7f014c212000 ip 00007f015db51fed sp 00007ffcc4875a18 error 4 in libQt5Gui.so.5.9.5[7f015da8a000+54f000] Segmentation fault (core dumped)

edit retag flag offensive close merge delete

Comments

I just ran qv4l2

VideoCapture is running via v4l2, too, so unfortunately, it looks more like a bad UVC driver, than an actual opencv problem. (you won't be able to do much from the opencv side)

berak gravatar imageberak ( 2019-06-13 23:54:35 -0600 )edit