macOS に ruby-opencv をインストールする


ruby で画像を判別するプログラムを書く為に opencv を導入しようとしたところ少し面倒くさい事がわかったのでメモしておこう。

GitHub - ruby-opencv/ruby-opencv: Versioned fork of the OpenCV gem for Ruby

ruby で OpenCV を利用する場合 ruby-opencv gem を利用するのが良いらしいが、以下のように gem install ruby-opencv を行うとエラーが出る。

$ gem install ruby-opencv
Building native extensions. This could take a while...
ERROR:  Error installing ruby-opencv:
	ERROR: Failed to build gem native extension.

    current directory: /Users/ryomatsu/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/ruby-opencv-0.0.18/ext/opencv
/Users/ryomatsu/.rbenv/versions/2.5.0/bin/ruby -r ./siteconf20180328-19033-15bv1r8.rb extconf.rb
>> Check the required libraries...
checking for -lstdc++... yes
checking for -lopencv_calib3d... no

先に OpenCV を入れないといけない。しかし普通に brew install opencv とすると最新バージョンである 3.4 が入るが、これは ruby-opencv では使えない。なので以下のように旧バージョンを指定してインストールする。

$ brew install opencv@2
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (caskroom/cask).
No changes to formulae.

==> Downloading
==> Summary
🍺  /usr/local/Cellar/opencv@2/ 278 files, 35.4MB

その後 gem install ruby-opencv する際に --with-opencv-dir で OpenCV のディレクトリを指定する

$ gem install ruby-opencv -- --with-opencv-dir=/usr/local/Cellar/opencv@2/
Building native extensions with: '--with-opencv-dir=/usr/local/Cellar/opencv@2/'
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 4 seconds
1 gem installed


しかし Rails で ruby-opencv を利用する際、Gemfile にてディレクトリを指定する方法が無いようだ。

その場合は bundle install 前に以下のコマンドにて OpenCV のディレクトリを指定する必要がある。

$ bundle config build.ruby-opencv --with-opencv-dir=/usr/local/Cellar/opencv@2/
$ bundle install

インストールできれば require 'opencv' で読み込める。

$ irb
> require 'opencv'
=> true


Sponsored Link