Magiquand1.0公開 [OpenCV関係]
昨日の時点でとりあえず動いてると思えたので、昨夜遅くまで(というか明け方近くまで)かかっていっきにバージョン1.0に仕上げた。こういうのってやり始めたら一段落するまでやらないと、何やってたのかわからなくなってしまうので片付けた。いつものようにいちげんさん向けサイトも作った(そしていつもの通り英語版も作ってある。これもいつもの怪しい「しんぐりっしゅ」だけど)。例によってhtml手書きの簡単なもの。ダウンロードはこのサイトの一番下からできる。
昼間の仕事もこのくらい集中できればいいのに...
昼間の仕事もこのくらい集中できればいいのに...
Magiquand (10.6+ Beta 0.9)のバグ [OpenCV関係]
昨日のベータ版Magiquandについて、昨日平林さんから動作しないとのコメントを頂いて、そのあともう一度見ていただいた。その結果、
- カメラ画像のみ表示される
- Windowをリサイズするとパーティクルが表示されるようになる
- それ以降は最初から表示されるようになる
Magiquand (10.6+ Beta 0.9)公開 [OpenCV関係]
こないだの「魔法の杖」アプリをもう少しもっともらしい形にした。
ここからダウンロードできます。
FameTime/iSightカメラを持ったMacとOS X10.6以上で動作するように作ったつもりです。ぜひ動作状況、あるいは動作しなかった状況を教えて下さい。よろしくお願いします。
ここからダウンロードできます。
FameTime/iSightカメラを持ったMacとOS X10.6以上で動作するように作ったつもりです。ぜひ動作状況、あるいは動作しなかった状況を教えて下さい。よろしくお願いします。
「魔法の杖」アプリ修正版 [OpenCV関係]
先日上げた「魔法の杖」アプリは動作しないことがわかりました。コメントで指摘していただいたおれんじさん、ありがとうございます。
修正版をここにおきました。
こちらをダウンロードして下さい。
先日のファイルをダウンロードして「なんだよ、動かないじゃん」と思った人、申し訳ありませんが、上のリンクでやり直してみて下さい。よろしくお願いします。
修正版をここにおきました。
こちらをダウンロードして下さい。
先日のファイルをダウンロードして「なんだよ、動かないじゃん」と思った人、申し訳ありませんが、上のリンクでやり直してみて下さい。よろしくお願いします。
「魔法の杖」アプリ [OpenCV関係]
こないだ作った「魔法の杖」アプリをベータ版として公開することにした。まだ全然完成度が低いので公開するつもりはなかったんだけど、自分の環境だけでは確認できないことが多いので、他の人に見てもらおうと思った。できれば小さなお子さんのいる人に、子供のおもちゃとして動作させた様子を教えてもらえればありがたいです。よろしくお願いします。
ダウンロードはここから(zip圧縮3.6MB)。
ベータ版という位置づけなので、アプリはFaceTimeカメラからの画像にパーティクルを重ねるだけで、パラメータの調整などはまったくできなくて、決めうち。日本語リソースも無くヘルプも無し。
動作環境は
ところで、アプリの名前「Magiquand」は「Magic Wand(魔法の杖)」と発音は同じになる。アプリの名前はアプリアイコン
(うう、ダセぇアイコン、他人のだけど)と同じようにプログラミングとは無関係だけど、かなり悩ましい問題。これはけっこういい名前だろうと思ったんだけどググると他所のサイトがヒットする。残念。
ダウンロードはここから(zip圧縮3.6MB)。
ベータ版という位置づけなので、アプリはFaceTimeカメラからの画像にパーティクルを重ねるだけで、パラメータの調整などはまったくできなくて、決めうち。日本語リソースも無くヘルプも無し。
動作環境は
- OS X10.7Lion以降
- FaceTimeカメラを内蔵したiMacやMacBook Pro/Airか、AVFundationが認識できるWebカメラなどが接続されたMac mini/Mac Pro
ところで、アプリの名前「Magiquand」は「Magic Wand(魔法の杖)」と発音は同じになる。アプリの名前はアプリアイコン
(うう、ダセぇアイコン、他人のだけど)と同じようにプログラミングとは無関係だけど、かなり悩ましい問題。これはけっこういい名前だろうと思ったんだけどググると他所のサイトがヒットする。残念。
OpenCVとCAEmitterLayerを使った魔法の杖効果 [OpenCV関係]
昨日、こんなのを作って遊んでいた。iMacのFaceTimeカメラのリアルタイム画像の上に、いわゆる魔法の杖効果(Magic Wand Effect)をオーバーラップする。こんなの。
これはOpenCVにあるLucas-Kanade法によるオプティカルフローで動きを検出して、それに対してOS Xの2次元パーティクルシステムであるCAEmitterLayerでパーティクルを飛ばしたもの。
「プリキュア、ドレスアップ!」
やっぱりおっさんでは絵的に醜い。バックも殺風景だし、YouTubeの圧縮のせいもあってなんかほこりが立ってるみたい。アプリのウィンドウの上ではもっときれいなんだけど。もうちょっと圧縮率の低いムービーをここに置いておくのでダウンロードしてみて欲しい。H.264圧縮のQuickTime形式、280x240の18秒間で2.7MB。
うーん、しかし、プリキュアの変身シーンよりもパーティクルの量は多いのに、なんか地味だな。Glitter(キラキラッ、ちゅうやつ)が無いからかな。CAEmitterLayerにそういうpropertyはないな。どうするればいいのかな。
これはOpenCVにあるLucas-Kanade法によるオプティカルフローで動きを検出して、それに対してOS Xの2次元パーティクルシステムであるCAEmitterLayerでパーティクルを飛ばしたもの。
「プリキュア、ドレスアップ!」
やっぱりおっさんでは絵的に醜い。バックも殺風景だし、YouTubeの圧縮のせいもあってなんかほこりが立ってるみたい。アプリのウィンドウの上ではもっときれいなんだけど。もうちょっと圧縮率の低いムービーをここに置いておくのでダウンロードしてみて欲しい。H.264圧縮のQuickTime形式、280x240の18秒間で2.7MB。
うーん、しかし、プリキュアの変身シーンよりもパーティクルの量は多いのに、なんか地味だな。Glitter(キラキラッ、ちゅうやつ)が無いからかな。CAEmitterLayerにそういうpropertyはないな。どうするればいいのかな。
Core Imageの顔認識をOS Xで - その9 [OpenCV関係]
ということで、ファイルを公開する。
実行環境がかなり限られているので、実際に動かしているところを、QuickTimeプレーヤの「新規画面収録」(変な名前)と言う機能でムービーにした。iMacのFaceTimeカメラに写真をかざしている。ムービー画面の下に「アクティビティモニタ」のCPU負荷とメモリ要求が一緒に見えている。
ときどきフレーム落ちしてるのは、CPUの負荷のせいだけではなくてQuickTimeスクリーンショットムービーのファイル書き込みのタイミングのせいもある。
実行環境がかなり限られているので、実際に動かしているところを、QuickTimeプレーヤの「新規画面収録」(変な名前)と言う機能でムービーにした。iMacのFaceTimeカメラに写真をかざしている。ムービー画面の下に「アクティビティモニタ」のCPU負荷とメモリ要求が一緒に見えている。
ときどきフレーム落ちしてるのは、CPUの負荷のせいだけではなくてQuickTimeスクリーンショットムービーのファイル書き込みのタイミングのせいもある。
Core Imageの顔認識をOS Xで - その7 [OpenCV関係]
ここんとこ毎日集中的にやってる顔認識比較アプリ。ちょっと急ぎすぎてるせいもあって、またひとつ訂正。
昨日、OpenCVのヘッダを読み込ませないためにOpenCVの定義が必要なものは全部voidポインタにしないといけないと書いた。しかしちょっと考えれば、もうすこしマシな手があることがわかる。つまりCore FoundationのOpaque Typeと同じことをすればいい。
昨日IplImage構造体へのポインタをvoidにしたけど、こうする。
昨日、OpenCVのヘッダを読み込ませないためにOpenCVの定義が必要なものは全部voidポインタにしないといけないと書いた。しかしちょっと考えれば、もうすこしマシな手があることがわかる。つまりCore FoundationのOpaque Typeと同じことをすればいい。
昨日IplImage構造体へのポインタをvoidにしたけど、こうする。
typedef struct _IplImage IplImage; typedef struct CvMemStorage CvMemStorage; @interface PTFaceDetectorUsingOpenCV : NSObject { void *faceCascade; void *leftEyeCascade; void *rightEyeCascade; void *mouthCascade; IplImage *orgImage; IplImage *grayImage; IplImage *smallImage; CvMemStorage *storage; }いままでさんざCore Foundationを見てきたのに、昨日は思いつかなかった。やっぱりボケてる。 ところでCvHaarClassifierCascadeへのポインタはvoidのままにした。自分の書いたコードを見てみるとvoidポインタのキャストの方が多かった。 まあ、わずかな手間の違いと、読みやすさのどちらをとるか、ということになる。