2010-01-14 55 views

回答

10

我是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。

+0

宝石是['hornetseye-v4l2'](https://rubygems.org/gems/hornetseye-v4l2) – Dorian 2016-10-08 21:42:33

+0

但是这在macOS上不起作用,OpenCV示例工作原理如下:http://stackoverflow.com/ a/39938139/407213 – Dorian 2016-10-08 22:44:10

+0

@Dorian是的,这是正确的。它只能在GNU/Linux下运行。 – wedesoft 2016-10-18 21:36:14

0

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

1

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

+0

我一直在尝试使用hornetseye,但它似乎没有充分发挥作用。 – Malfist 2010-01-15 17:30:56

0

Video4Linux API涉及发送特殊ioctl S到/dev/video*装置,在堆积结构数据; Ruby不是一件容易的事情。 (这还不是全部由C那么多的乐趣,无论是。)

ruby-v4l是采用video4linux在Ruby中捕捉画面的扩展库。

在Debian的Orphaned,因为它的维护者并没有自2005年以来一直活跃,因此,如果它不工作,我不认为你能得到多少支持。

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

0

随着ruby-opencv宝石:

require "opencv" 

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

并安装在Mac OS的OpenCV:brew install homebrew/science/opencv --HEAD