How can I take snapshots from a webcam in ruby? I know the webcam device is on /dev/video0, but how do I get a picture from it?
相关问题
- Is shmid returned by shmget() unique across proces
- how to get running process information in java?
- How to specify memcache server to Rack::Session::M
- Why am I getting a “C compiler cannot create execu
- reference to a method?
The Video4Linux API involves sending special ioctls to the
/dev/video*
device, with data in packed structures; not something easy to do from Ruby. (It's not all that much fun from C, either.)Orphaned in Debian because its maintainer hasn't been active since 2005, so if it doesn't work I don't think you'll be able to get much support.
A more modern solution would probably be to create proper libv4l binding for Ruby. However, I don't know of any present work on that.
Since you're using Linux, try videodog. It's a small program, which does one thing and does that well: capturing a frame from your /dev/video0 device. From that point you can use any Ruby technique you want to process the JPEG image you got from videodog.
With the
ruby-opencv
gem:And to install OpenCV on macOS:
brew install homebrew/science/opencv --HEAD
.I've never actually used it but hornetseye looks good. This question has also already been asked here
I'm the developer of Hornetseye. You can capture images with the V4L2-interface of HornetsEye as follows.
Currently supported colourspaces are UYVY, YUYV, YUV420, GREY, RGB24. Note that other colourspaces such as MJPEG are not supported at the moment.