Highgui和ruby

我需要编写一个简单的项目,我正在使用opencv,ruby和mac。 我通过brew安装了opencv,通过gem install安装了rb_webcam。

# -*- coding: utf-8 -*- require "opencv" require "rb_webcam" capture = Webcam.new 

这段代码抛出

 $ ruby tracking.rb /Users/evilgeniuz/.rvm/gems/ruby-1.9.3-p125/gems/nice-ffi-0.4/lib/nice-ffi/library.rb:98:in `load_library': Could not load highgui. (LoadError) from /Users/evilgeniuz/.rvm/gems/ruby-1.9.3-p125/gems/rb_webcam-0.3.0/lib/rb_webcam.rb:7:in `' from /Users/evilgeniuz/.rvm/gems/ruby-1.9.3-p125/gems/rb_webcam-0.3.0/lib/rb_webcam.rb:4:in `' from /Users/evilgeniuz/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `require' from /Users/evilgeniuz/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require' from /Users/evilgeniuz/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require' from tracking.rb:4:in `' 

我不知道怎么能指出highgui在哪里。

UPD:通过从https://github.com/TyounanMOTI/rb_webcam下载gem来解决它,并手动构建和安装它。

不确定你使用的是哪个包装器,但是你应该看一下: Ruby / OpenCV – 一个OpenCV Ruby包装器 。

人脸检测样本:

 #!/usr/bin/env ruby require 'opencv' include OpenCV # Load an image img = IplImage.load('sample.jpg') # Load the cascade for detecting faces detector = CvHaarClassifierCascade::load('haarcascade_frontalface_alt.xml.gz') # Detect faces and draw rectangles around them detector.detect_objects(img) do |rect| img.rectangle!(rect.top_left, rect.bottom_right, color: CvColor::Red) end # Create a window and show the image window = GUI::Window.new('Face Detection') window.show(img) GUI::wait_key 

分类器可以在这里下载。

编辑

以下代码使用OpenCV,rb_webcam gem和RMagick从网络摄像头捕获图像并将其另存为jpg文件:

 require 'rb_webcam' require 'RMagick' capture = Webcam.new image = capture.grab width = image.size[:width] rows = image.data.unpack("C*").each_slice(3).to_a.each_slice(width).to_a capture.close height = rows.length img = Magick::Image.new width, height rows.each_with_index do |r, i| q = r.map {|b, g, r| Magick::Pixel.new r * 256, g * 256, b * 256, 0} img.store_pixels(0, i, width, 1, q) end img.format = 'jpg' img.write 'webcam.jpg' 

也许现在为时已晚,但我也在苦苦挣扎,让我的网络摄像头工作,直到我无可救药的愤怒,我不小心尝试:

 #!/usr/bin/env ruby require "rubygems" gem "ruby-opencv" require "opencv" window = OpenCV::GUI::Window.new("webcam") capture = OpenCV::CvCapture.open while true key = OpenCV::GUI::wait_key(1) image = capture.query window.show image next unless key case key.chr when "\e" exit end end 

希望这会rb_webcam帮助,因为我在经过一周多的时间后放弃了rb_webcam。

使用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 install homebrew/science/opencv --HEAD

最好的跨平台开箱即用

      
Webcam Your captured image will appear here..
Your captured image will appear here...<

-cartasu – 🙂 forgott他的pw

至少在Windows上,我们可能应该在load_library中指定版本号,如下面的rb_webcam.rb第7行:

 load_library("opencv_highgui2413")