コマンドラインツールが入っていない場合
すでに入っているなら不要
ターミナルからコマンド
brew upgrade ruby-build
実行時にError: Xcode alone is not sufficient on Sierra.
Install the Command Line Tools:
xcode-select --install
とエラーが出たら、表示されたとおりにInstall the Command Line Tools:
xcode-select --install
xcode-select --install
を入力するとインストールできる。homebrewが入っていないなら入れる
パッケージ管理をしてくれる。
RubyとPythonを管理するのに使用する。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
なんとインストールにRubyを使用している!!(Macは古いバージョンがすでに入っているので一応使える)
今からRubyを入れようという話ではなかったか.....
インストール後もしくはすでに入っているなら更新する。
brew update
rbenvが入っていないなら入れる
Ruby管理用
brew install rbenv
Ruby 2.3 をインストール
すでに入っているバージョンが2.3以上なら不要。
ruby-buildのアップデート
brew upgrade ruby-build
とりあえず入りさえすればいいので2.3を指定
rbenv install 2.3.0
rbenv global 2.3.0
rbenv global 2.3.0
OpenCVインストール
brew tap homebrew/science
brew install opencv@2
brew install opencv@2
途中エラーが出ている
Error: The `brew link` step did not complete successfully
brew link --force opencv@2
python2.7 をインストール
npm install時にpython2.7を使用している模様。
pyenvも必要になる...
brew install pyenv
一覧表示
pyenv install --list
2.7.xをインストール
pyenv install 2.7.14
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
source ~/.bash_profile
上記で.bash_profile にpyenvの設定が追記適用される。
pyenvでインストールしたpythonを利用できるようになる。
プロジェクトディレクトリにOpenCVインストール
npm i -S opencv
ダウンロードに失敗している(そもそもリンク先が存在しない)がいける?
node-pre-gyp ERR! Tried to download(403): https://node-opencv.s3.amazonaws.com/opencv/v6.0.0/Release/node-v48-darwin-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for opencv@6.0.0 and node@6.11.4 (node-v48 ABI, unknown) (falling back to source compile with node-gyp)
挙動的にはダウンロードに失敗した場合pythonでごにょごにょしてるとかだろうか?node-pre-gyp ERR! Pre-built binaries not found for opencv@6.0.0 and node@6.11.4 (node-v48 ABI, unknown) (falling back to source compile with node-gyp)
サンプルソース
var opencv = require('opencv'); // sample.jpg を読んで 顔に丸をつけてout.jpgに出力 cv.readImage("./sample.jpg", function(err, im){ im.detectObject(opencv.FACE_CASCADE, {}, function (err, faces) { if (err) { console.log(err) } else { faces.forEach((face) => { im.ellipse( face.x + face.width / 2, face.y + face.height / 2, face.width / 2, face.height / 2) }) im.save("./out.jpg") done() } }) })
顔の部分をすべて○で囲っている。
参考
https://github.com/peterbraden/node-opencv
https://qiita.com/tmknom/items/56542abd9341820bb9cc
http://calmery.hatenablog.com/entry/2017/01/12/190136
途中エラーを吐いているのがちょっと気持ち悪い。
TypeScriptの型情報がないので自前で用意する必要がある。
ソース動かすまでがやたら長いのどうにかならないものか。
まなたドキュメントがないっぽい上に他のOpenCVと微妙に記述が違うそうなので細かいことをやろうとすると結構つらい。