Firstly i would like to say i came across your discussion looking for select timeout error solution but as i went through it i didnt notice if you found a solution, but if you have it now, i would appreciate it. The select timeout error still seems to be in existence even on BBB Rev C with kernel 3.8.13-bone79. I am working on an Iris recognition system that initially has to track eyes in a live video stream (from there captures cropped eye images that will be processed). I have installed different OpenCV versions, 2.4.9, 2.4.11 and 3.0.0 and in all of them i am getting the same error. I am working with a Logitech, Inc. QuickCam E 3500 webcam. I am accessing the BBB Desktop using Tightvnc client on my PC running Ubuntu 14.04 LTS.
What is surprising is that it is capable of video streaming with opencv installed by apt-get (apt-get install python-opencv) but the limitation with this version is that it has very old cv bindings and documentation on some functions for Histogram equalisation is not available online. I am stuck, i need your help. On Tuesday, 10 September 2013 16:50:46 UTC+2, Matthew Witherwax wrote: > > Getting another BBB or raspberry pi probably wont help, but a U2 from > HardKernel here > http://www.hardkernel.com/renewal_2011/products/prdt_info.php?g_code=G135341370451 > > probably would. You can use the BBB to do all IO and use the processing > power of the U2 to handle compute intensive tasks. That is actually my end > goal. The cpu use I stated earlier was without showing the image. > Displaying the image will increase cpu use. > > I am also working on a tracking application with the webcam mounted on a > servo. For my purposes, I do not need to see the image on the BBB and can > push it over wifi to my laptop if I want to view it. > > As far as cv code, what are you looking for? I have posted a tool on my > blog here http://blog.lemoneerlabs.com/post/shades-of-red to help you > find HSV values from images to allow you to to find values to threshold > target colors. I will post another one on using HSV ranges to threshold an > image to isolate things like a red colored ball. I have been implementing > OpenCV code using python right now for experimentation, but you should be > able to translate it to C++ or your language of choice. > > The command v4l2-ctl --list-formats-ext will tell you the pixel formats > and resolutions supported by your camera. > > Hope this helps, > > Matthew Witherwax > > > On Tue, Sep 10, 2013 at 8:48 AM, James Richins <james....@btinternet.com > <javascript:>> wrote: > >> Matthew, >> >> It does remind of something on Derek Molloy's site in that he adds coding >> to deal with the h264 codec for taking stills with opencv. I hesitated at >> the idea. Interestingly even using an additional bbb or raspberry pi might >> not even help. I'm looking at camera tracking objects/object recognition >> and servo control. >> I might find that by not displaying the video on the monitor, that the >> tracking and servo control can work less than 100% CPU. >> I have yet to implement the cv code for that, it's a real struggle to >> find good code. And not get errors. I have managed servo control through >> python and manual entering numbers so its ultimately possible. >> I'm not sure if my camera does anything other than yuyv. I'd be >> interested in connecting an Ethernet cam to the Ethernet port and read >> camera data from there, but you'd probably run into the same problem. >> Ethernet cam to pc processing cv code, wifi to beaglebone servo control >> might be good. But its probably a slow process and too complicated for me. >> >> Anyway good luck with your project. >> >> James >> >> On 10 Sep 2013, at 13:57, Matthew Witherwax <able...@gmail.com >> <javascript:>> wrote: >> >> James, >> >> I have not done any cpu testing other than while saving single frames. >> In MJPEG format, capturing a single frame at 1920x1080 30 fps and saving it >> was taking about 6% cpu. Doing the same in YUYV at a reduced resolution >> and converting to jpeg was taking about 70%. I would not rush out to buy a >> h264 camera. First, I am not sure OpenCV decodes h264 streams. Second, if >> it did, I am not sure you would see much improvement because of the need to >> decode the h264 stream. If the BBB does this in hardware is likely wont be >> bad, but if it is a software implementation we are just shifting the >> burden. I am currently working through several tradeoffs. YUYV should >> give the truest image free of compression artifacts, but will be larger and >> require more resources to capture and process. MJPEG may suffer from >> compression artifacts, but images can be captured more quickly and at >> higher resolutions. One has to decide what combination of frame rate, >> resolution, and fidelity are required. I am currently working through the >> permutations to see what suits my application. >> >> An option I have open is to send the captured images over a wifi link to >> a computer that runs all the OpenCV code and pipes back the data I am >> after. This leaves the BBB mostly free to do other work. I will update as >> I progress. >> >> Matthew Witherwax >> >> >> On Tue, Sep 10, 2013 at 7:35 AM, James Richins <james....@btinternet.com >> <javascript:>> wrote: >> >>> >>> >>> Did you register anything on CPU usage. I know running moustache placing >>> cv code it will run at 100% CPU on a standard webcam. Is pre processing >>> less cpu intensive or will cv code always push the bb to the max? >>> I didn't think I'd rush to buy a h264 hardware encoding cam if its the >>> software and running at 320 is just as efficient as preencoded hd video. >>> >>> >>> On 10 Sep 2013, at 13:16, Matthew Witherwax <able...@gmail.com >>> <javascript:>> wrote: >>> >>> João, >>> >>> 1. Glad to hear you are making progress. My blog is at >>> blog.lemoneerlabs.com. Unfortunately I have yet to post my write up on >>> the USB cameras, but I will get it done soon. I can tell you with the >>> Logitech C920 it is possible to capture 1920x1080 frames with the FPS set >>> to 30 in both MJPEG and YUYV format. >>> >>> 2. v4l2grab sets the format to YUYV before grabbing the frames. It >>> then converts the captured frame to a jpeg and saves it. I will post a >>> version to my blog this week that uses MJPEG instead. Typical MJPEG >>> implementations encode each video frame as a jpeg. The code I wrote puts >>> the webcam in MJPEG mode for capture and saves the returned frame. In the >>> case of the Logitech C920, the returned frame is a jpeg image. It seems by >>> going this route the camera actually creates the jpeg sparing the BBB from >>> having to do it. In addition, the jpeg is considerably smaller than the >>> YUYV frame resulting in less load on the USB. I would appreciate you >>> testing the output when I post the code as it is entirely possible that not >>> all cameras handle MJPG the same, and the result might not be a valid jpeg. >>> >>> 3. 13.2 MB/s is the limit I was able to reach through testing. You >>> should note the webcam I tested with for that number only did bulk >>> transfers which guarantee delivery. It may be slightly higher for >>> isochronous transfers as frames can (and seem to) get dropped. I am not >>> sure why that is the limit. It maybe a hardware issue or a USB driver >>> implementation issue. During further testing on several laptops, the newer >>> ones could reach a higher throughput even though all had a USB 2 bus which >>> would lead me to believe it is hardware related, but it is a question for >>> the hardware guys. >>> >>> 4. I will post my code this week. Please test it with your MJPEG >>> capable cameras, and let me know the results. >>> >>> 5. The UVC implementation in Linux does not support still image >>> capture. This means tools like v4l2grab set the camera to record in a mode >>> that uses no compression or intra-frame compression ( >>> http://en.wikipedia.org/wiki/Intra-frame) and then grab frames from the >>> stream. This is why the format and frame rate affect the capture. The >>> stream has to be open and the data pulled before we can grab an image. >>> >>> 6. Possibly, see 3. >>> >>> 7. For my purposes, I have not tested plug-and-play so I cannot say >>> much about it. >>> >>> >>> On Mon, Sep 9, 2013 at 1:15 PM, João M. S. Silva <joao.m.sa...@gmail.com >>> <javascript:>> wrote: >>> >>>> Thanks Matthew, Don. >>>> >>>> Here is my follow up: >>>> >>>> 1. Matthew, what is you blog address? >>>> >>>> 2. I compiled v4l2grab and used the -I switch to adjust the fps. I >>>> found out that with the Logitech camera I can capture 640x480 at up to 6 >>>> fps. With -I 7 or above, it hangs. With another cheap camera, even -I 1 >>>> hangs! >>>> >>>> 3. Is 13.2 MB/s somehow BBB's limit? Why? >>>> >>>> 4. My cheap cameras are YUYV capable and one of them is MJPEG capable. >>>> The Logitech is both YUYV and MJPEG capable. >>>> >>>> 5. As I've read elsewhere UVC does not allow to get still images, so >>>> video performance issues affect still image capturing, right? is there a >>>> way to capture pure still images (bandwidth limitations should be >>>> irrelevant in that case)? >>>> >>>> 6. Overall, this is an issue from the BBB, right? All of this works in >>>> my laptop and in BBXM. Is it a bug from the BBB USB implementation? >>>> >>>> 7. I also found BBB's USB is not really plug-and-play. Sometimes >>>> devices don't get recognized and a reboot is needed. >>>> >>>> Thanks. >>>> >>>> -- >>>> For more options, visit http://beagleboard.org/discuss >>>> --- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "BeagleBoard" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/beagleboard/2NO62mGcSvA/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> beagleboard...@googlegroups.com <javascript:>. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>> >>> -- >>> For more options, visit http://beagleboard.org/discuss >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "BeagleBoard" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/beagleboard/2NO62mGcSvA/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> beagleboard...@googlegroups.com <javascript:>. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> -- >>> For more options, visit http://beagleboard.org/discuss >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "BeagleBoard" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/beagleboard/2NO62mGcSvA/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> beagleboard...@googlegroups.com <javascript:>. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- >> For more options, visit http://beagleboard.org/discuss >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "BeagleBoard" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/beagleboard/2NO62mGcSvA/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> beagleboard...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> -- >> For more options, visit http://beagleboard.org/discuss >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "BeagleBoard" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/beagleboard/2NO62mGcSvA/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> beagleboard...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> > > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/ecbcf781-d04a-4a40-b6d3-1a33e5e26267%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.