从ruby摄像头抓取快照

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

我是Hornetseye的开发者。 您可以使用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,GRAY,RGB24。 请注意,目前还不支持MJPEG等其他色彩空间。

我从来没有真正使用它,但hornetseye看起来不错。 这个问题也已经在这里问过了

由于您使用Linux,请尝试videodog 。 这是一个小程序,它可以完成一件事情,并且做得很好:从/ dev / video0设备捕获一个帧。 从这一点开始,您可以使用任何Ruby技术来处理从videodog获得的JPEG图像。

Video4Linux API包括发送特殊的ioctl到/dev/video*设备,数据在打包结构中; Ruby不是一件容易的事情。 (C也不是那么好玩。)

ruby-v4l是一个扩展库,用于在使用Video4Linux的Ruby中捕获图片。

在Debian中是孤立的 ,因为它的维护者自2005年以来一直没有活跃,所以如果它不起作用,我不认为你能得到很多支持。

更现代的解决方案可能是为Ruby创建适当的libv4l绑定。 但是,我不知道目前有什么工作。

ruby-opencv宝石:

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

并在macOS上安装OpenCV: brew install homebrew/science/opencv --HEAD