在ruby中从网络摄像头抓取快照

在ruby中从网络摄像头抓取快照,ruby,linux,webcam,Ruby,Linux,Webcam,如何从ruby中的网络摄像头拍摄快照?我知道网络摄像头设备在/dev/video0上,但如何从中获取图片?既然您使用的是Linux,请尝试。这是一个小程序,它只做一件事,而且做得很好:从/dev/video0设备捕获帧。从那时起,您可以使用任何Ruby技术来处理从videodog获得的JPEG图像。我从未实际使用过它,但看起来不错。这个问题也已经被问到了这个问题涉及到向/dev/video*设备发送特殊的s,数据采用压缩结构;从Ruby做起来并不容易。(C也没那么有趣。) 是一个使用Video4

如何从ruby中的网络摄像头拍摄快照?我知道网络摄像头设备在/dev/video0上,但如何从中获取图片?

既然您使用的是Linux,请尝试。这是一个小程序,它只做一件事,而且做得很好:从/dev/video0设备捕获帧。从那时起,您可以使用任何Ruby技术来处理从videodog获得的JPEG图像。

我从未实际使用过它,但看起来不错。这个问题也已经被问到了

这个问题涉及到向
/dev/video*
设备发送特殊的s,数据采用压缩结构;从Ruby做起来并不容易。(C也没那么有趣。)

是一个使用Video4Linux在Ruby中捕获图片的扩展库

在Debian中,因为它的维护者自2005年以来就不活跃了,所以如果它不起作用,我认为你将无法获得太多的支持

更现代的解决方案可能是为Ruby创建适当的绑定。然而,我不知道目前有任何关于这方面的工作。

我是的开发者。您可以使用HornetsEye的V4L2接口捕获图像,如下所示

require 'rubygems'
require 'hornetseye_v4l2'
require 'hornetseye_xorg'
require 'hornetseye_rmagick'
include Hornetseye
input = V4L2Input.new '/dev/video0'
img = X11Display.show { input.read }
img.to_ubytergb.save_ubytergb 'test.png'

目前支持的颜色空间有UYVY、YUYV、YUV420、灰色、RGB24。请注意,目前不支持其他颜色空间,如MJPEG。
ruby opencv
gem:

require "opencv"

capture = OpenCV::CvCapture.open
sleep 1 # Warming up the webcam
capture.query.save("image.jpg")
capture.close

要在macOS上安装OpenCV:
brew安装homebrew/science/OpenCV--HEAD

我一直在尝试使用hornetseye,但它似乎没有完全起作用。gem是,但这在macOS上不起作用,OpenCV示例起作用:@Dorian是的,这是正确的。它只在GNU/Linux下工作。这是一个非常有趣的项目。当我看到这样的努力时,我希望ruby hype火车还在运行。@nurettin谢谢