I want to use the Ruby interface to the library and of the various project forks I went with https://github.com/ruby-opencv/ruby-opencv
The github page has several alternate ways to install the interface, but installing it as a gem is the most mainstream. Even so, you need to do a bit more work than usual. First create an install directory for the 'raw' gem and clone it from github:
$ mkdir opencv_install $ cd opencv_install/ $ git clone git://github.com/ruby-opencv/ruby-opencv.git $ cd ruby-opencv/ $ git checkout master $ bundle install $ rake gem $ gem install pkg/opencv-*.gem -- --with-opencv-dir=/usr/local/Cellar/opencv/2.4.2Your opencv directory may not be identical to mine but this is where homebrew should place it. For me, that was all I needed to do before copying the examples from the github page and trying things out ! Here is my version of the basic image display program:
#!/usr/bin/env ruby require "opencv" abort "Usage: #{$0} " unless ARGV.length == 1 image = OpenCV::IplImage.load(ARGV[0]) window = OpenCV::GUI::Window.new("preview") window.show(image) OpenCV::GUI::wait_keyWhen you run the script with an image file, you can quit by typing 'q' in the resulting image window. Now for the fun stuff. Here is my version of the github page face detection script. Face detection uses 'haarcascade' classifier files which live in your OpenCV library directory. With my Homebrew installation these are found in /usr/local/Cellar/opencv/2.4.2/share/OpenCV/haarcascades
Get yourself an image file with a few faces (looking directly at the camera) to test it on.
#!/usr/bin/env ruby require "opencv" abort "Usage: #{$0} source_image_file dest_image_file" unless ARGV.length == 2 classifiers_dir = "/usr/local/Cellar/opencv/2.4.2/share/OpenCV/haarcascades" data = File.join(classifiers_dir, "haarcascade_frontalface_alt.xml") detector = OpenCV::CvHaarClassifierCascade::load(data) image = OpenCV::IplImage.load(ARGV[0]) detector.detect_objects(image).each do |region| color = OpenCV::CvColor::Red image.rectangle! region.top_left, region.bottom_right, :color => color end image.save_image(ARGV[1])Make the file executable, run the script and then view the output file
$ chmod a+x findface.rb $ ./findface.rb smiths.jpg output.jpg $ open output.jpgAnd you should something along the lines of this:
Pretty amazing, if you ask me - Not perfect but three out of four ain't bad !
Now on to some real experiments with OpenCV - I can't wait...
No comments:
Post a Comment