OpenCV framework for OSX
これまた一般の方には縁の薄い代物です。でも、うまく使えばとても便利なものです。もちろん一般的な仕様のFrameworkですからXcodeで色々遊ぶのも良いでしょう。しかしながら想定しているターゲットはExternalObjectによるExtendscriptの拡張です。
年始初頭よりフェイスデテクションに関する基礎的な処理を模索してきましたが、これらの機能を汎用に落とすには一番のネックになる部分であるOpenCVのインストールをワンパスで処理出来る様にするというのが主な目的なのです。
以前紹介させていただいたものはバージョンが低く、64bitには対応していませんでした。今回のわたし自身によるリリースではは32/64bit双方に対応させています。また、わたし自身が細かい拡張に使いたい部分も盛り込んであるため170MB程度の巨大なライブラリとなっています。また、ダウンロードはわたしのCCからになります。別サイトですのでご承知下さい。
Version information
OpenCV version : 2.4.5
System Requirement : OSX10.7 or later
This software is provided “AS IS” and use it at YOUR OWN RISK.
More inforrmation in http://opencv.org
10件のフィードバック
コメントを残す
コメントを投稿するにはログインしてください。
facedetecotersを試してみようと思いscriptをコピーし、インデザインで動かそうとすると、IO ERROR:ファイルまたはフォルダーが存在しません と表示され、OKを押すとエラー番号21 undefinedはオブジェクトではありません とでます。 何が悪いのでしょうか?
当方の環境は MacOS Lion インデザインのバージョンはCS5.5を使用しております。
えー、こちらはOpenCV Frameworkの配布でして、どのバージョンのスクリプトをコピーされたのか判別しないのですが、おそらくfaceDetecter64.frameworkというExtendscript側が利用するエクスターナルオブジェクトを読込めていないと思われます。こちらは最新レビジジョンが1.0.3になっています。私のスクリプトを利用しているのでしたらこのフレームワークはルート(起動ディスクの第一階層、簡単に言うとMacintosh HDの中)に置いておけば認識します。又、カスケードファイルを規定の位置に配置出来ていない場合も同様のエラーが出ます。こちらもルート階層にhaarcascadesというフォルダを用意し、その中に配置すれば良いでしょう。
又、スクリプトに記述されたパスを書き換える事でも対処出来ます。
Twitterで声かけていただければセットアップのお手伝いしますよ。
原因を確定しました。エクスターナルオブジェクトを読込めていません。
faceDetecter32-1.0.0.framework
をダウンロードして起動ディスクの第一階層に置いてください。
対応ありがとうございます
Twitterも出来ていないおじさんです。
やっぱり同様のエラーがでます、やってみた事はOPEN CVをダウンロードインストール、FaceDetectorとhaarcascadesのフォルダーを起動ディスクを開いた直にコピー
デスクトップにあるフォルダーを指定してもエラーが出て進みません。インデザインのファイルにはボックスが作成されフォルダー内の画像一点は配置はされています。
1点だけ配置される場合はExternalObjectの読み込みは正常です。画像の配置処理はExternalObjectの読み込み後に行われる処理だからです。恐らくtrackFaceメソッドの引数であるcascadeを読込めていない物と思われます。haarcascadeファイルの配置とスクリプトとの整合性を確認する必要があります。スクリプトのカスケードの設定が
var cascade = “/haarcascades/haarcascade_frontalface_alt2.xml”;
であるならば、実際のファイル配置は
Macintosh HD/haarcascades/haarcascade_frontalface_alt2.xml
でなければなりません。ご確認ください。
たびたびすみません、カスケード設定確認しましたが合っているようです。
後出しの様な形なり申し訳ございませんが、エラー21のウィンドウの下部には 変換方式:main ファイル(スクリプトファイルある場所とファイル名) ソース:var pos = extObj.trackFace(tgtFile, cascade);
と表示されています。
正常であればフォルダー内の画像を自動配置、顔認識後そのボックス内に顔の部分が表示されるのでしょうか?
現在は写真が一点のみ原寸?で配置されます。
問題を切り分けましょう。
var f = File.openDialog (“select a file…”);
var tgtFile = f.fsName;
var cascadeFile = “/haarcascades/haarcascade_frontalface_alt_tree.xml”;
try{
var extObj = new ExternalObject(“lib:/faceDetecter.framework”);
alert (extObj.trackFace(tgtFile, cascadeFile, 1.11, 4, 50));
extObj.unload();
}catch(e){
alert(e);
}
このスクリプトをESTKへコピペしてステップインで実行してください。
1行目でファイル選択ダイアログが出ますのでターゲットの画像を選択します。以降ステップインして5
行目でエラーが出ればエクスターナルオブジェクトのエラー、6行目ならカスケードの読み込み不良です。正常に働いたときは座標の配列がアラートされます。
ありがとうございます。
動きました、結果からいうと5行目のvar extObj = new ExternalObject(“lib:/faceDetecter.framework”);のfaceDetecter.frameworkの頭に/が入っていなかったのが原因のようでした。
たくさんの顔写真を配置しなければならず、大雑把でも良いので自動で出来たらいいなと探していました。
今回は6点で、1点のみ胸のあたりでトリミングされましたが、今までの苦労に比べれば!!
貴重なお時間ありがとうございました
そうですか、動きましたか。おめでとうございます。
64bit版の方が精度が上がり、10%以上高速に動作します。バストアップのデータばかりの配置であれば95%以上のスコアが望めますが、IDがCCでないと動きません。今後利用出来る様になれば良いですね。