My first steps into Ruby and OpenCV(on OSX)
I was writing some robotic code that will run on a mac mini, so I tryied on my macbook for the first time, ruby binding to opencv. It was a weird experience lol.
First, to install OpenCV, brew do the job:
$ brew tap homebrew/science $ brew install opencv
after a while we see that instalation goes flawlessly:
/usr/local/Cellar/opencv/2.4.13.2: 278 files, 35.6MB
and we have current version: 2.4.13.2. That said, now install ruby gem:
$ gem install ruby-opencv -- --with-opencv-lib=/usr/local/Cellar/opencv/2.4.13.2/lib \
--with-opencv-include=/usr/local/Cellar/opencv/2.4.13.2/include/opencv \
--with-opencv-include=/usr/local/Cellar/opencv/2.4.13.2/include/opencv2
Fetching: ruby-opencv-0.0.18.gem (100%)
Building native extensions with: '--with-opencv-lib=/usr/local/Cellar/opencv/2.4.13.2/lib --with-opencv-include=/usr/local/Cellar/opencv/2.4.13.2/include/opencv --with-opencv-include=/usr/local/Cellar/opencv/2.4.13.2/include/opencv2'
This could take a while...
Successfully installed ruby-opencv-0.0.18
Parsing documentation for ruby-opencv-0.0.18
Installing ri documentation for ruby-opencv-0.0.18
Done installing documentation for ruby-opencv after 7 seconds
1 gem installed
after that, time to code.
My first try, obviously, is to use HAAR cascade classifier to look for faces.
require "rubygems"
require "opencv"
include OpenCV
window = GUI::Window.new("grab da face!")
camera = CvCapture.open
detector = CvHaarClassifierCascade::load('./haarcascade_frontalface_alt.xml')
loop {
image = camera.query
detector.detect_objects(image).each { |rect|
image.rectangle! rect.top_left, rect.bottom_right, :color => CvColor::Blue
}
window.show image
break if GUI::wait_key(100)
}
It didn’t worked as ruby-opencv currently supports only older type format of trained data xml. To solve that, I grabed older version of haarcascade_frontalface_alt.xml from https://raw.githubusercontent.com/Itseez/opencv/2.4.10.4/data/haarcascades/haarcascade_frontalface_alt.xml and it worked as expected.
Sometimes, OSX Facetime camera stop working, but is easy to fix, just run
sudo killall VDCAssistant
wait a little and voilá.
In the end, was a different experience, it worked but was way too slow. I’ll try to tweak a little but python version are way faster and I believe I’ll keep using it.