ルビーのウェブカメラからスナップショットを撮るにはどうすればよいですか?Webカメラデバイスが/dev/ video0にあることは知っていますが、それから画像を取得するにはどうすればよいですか?
5 に答える
私は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、GREY、RGB24です。現在、MJPEGなどの他の色空間はサポートされていないことに注意してください。
私は実際にそれを使ったことがありませんが、hornetseyeはよさそうです。この質問はすでにここで尋ねられています
Linuxを使用しているので、videodogを試してください。これは小さなプログラムで、1つのことを実行し、それをうまく実行します。それは、/ dev/video0デバイスからフレームをキャプチャすることです。その時点から、videodogから取得したJPEG画像を処理するRubyテクニックを使用できます。
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。