タグ別アーカイブ: GIMP

GIMPからcvInpaint処理(Python経由で)~画像の小キズ隠しに~

[pukiwiki]
//今日の一行ニュース
//[[使うのが惜しい 顔がついた「こけしマッチ」って?:http://www.excite.co.jp/News/bit/E1225272377472.html]]
//これは楽しげ

//防災科学技術研究所(略称:防災科研)
//http://www.bosai.go.jp/
//*[[大加速度地震動時における片揺れ現象(トランポリン効果)の発見:http://www.bosai.go.jp/news/press_release/20081031_01.pdf]]

OpenCVのinpaint関数をGIMPから(Python経由で)使えるようにしてみました。

処理結果はこちらのサンプルみたいな感じ。
-[[【動画】inpaint処理結果サンプル:http://video.nifty.com/cs/catalog/video_metadata/catalog_071111041075_1.htm]]

あまり大げさなことは出来ませんが、小さいノイズを消したりするのに便利なので、個人的に手放せません。

以下コード
[/pukiwiki]
続きを読む GIMPからcvInpaint処理(Python経由で)~画像の小キズ隠しに~

GIMP+Python オプティカルフローであそぶ その2 CVtypes編

[pukiwiki]
GIMP2.4用のプラグインとして動かしてみました。
できたところまでメモ。
二つのレイヤーに ピーマンを少し動かした状態で描く。

http://boxheadroom.com/wp/wp-content/uploads/2008/03/p1.jpg
http://boxheadroom.com/wp/wp-content/uploads/2008/03/p2.jpg

マウス右ボタン -> フィルター ->Python ー>ofblur5
こんなダイアログが表示されます。
http://boxheadroom.com/wp/wp-content/uploads/2008/03/d.jpg

と、動きの大きい部分(動きの絶対値)が選択されます。
http://boxheadroom.com/wp/wp-content/uploads/2008/03/select.jpg

(直後は画面に反映されてません。画像左下のクイックマスクボタンで切り替えすると反映されます)
http://boxheadroom.com/wp/wp-content/uploads/2008/03/select2.jpg
(左下、小さい赤い四角が見えてる場所)

ここまで。
欲しかった結果と違うなぁ~ と、最初はガッカリしたんですが、いろんなサンプル画像で遊んでみたら 使い方によっては面白いかも。

ところで、GIMPには、ピーマンのブラシが標準装備されていて、今回のサンプル画像はそれを使ってるのですが。。。なぜマスコットキャラクターではなく、ピーマン?
(こんなときは便利ですが。)

以下は作業メモ+プラグインのソースコード。
[/pukiwiki]

続きを読む GIMP+Python オプティカルフローであそぶ その2 CVtypes編

GIMPで顔認識(Python経由でOpenCV)

こちらの記事の続き。

ほとんど、GIMPとOpenCVのサンプルコードのひきうつしですが。。。

あらかじめ、CVtypes.pyに、前述の記事のパッチをあてておく必要があります。

OpenCVサンプルコード内 haarcascadesフォルダを中身のxmlファイルごとGIMPプラグインフォルダにコピー。
以下のコードをcvfacedetect.pyという名前で、GIMPプラグインフォルダ(GIMP24\lib\gimp\2.0\plug-ins)に保存、GIMP次回起動時に認識される、はずです。

認識されていれば、GIMPで画像を開き、フィルターの中にOpenCVという階層が出来ます。その中のcvfacedetectを選ぶと、フィルタを実行します。

人物の顔が丸く選択されたら成功です。
実行自体は短いのですが、起動までに「か~な~り~」時間がかかるので実用性には欠けます。あくまでOpenCVを使ってみるサンプルコード、ということで。

卒業アルバムなど集合写真でやってみると、意外に引っかからない人が居たりして楽しかったり(汗
続きを読む GIMPで顔認識(Python経由でOpenCV)

「CVtypes.py」OpenCVをctypes経由で使う

[pukiwiki]
自分が忘れた時のために、作業メモ

[[GIMP2.4 win32版のプラグインをPythonで書く インストール編:http://boxheadroom.com/2007/12/16/gimp_python]]の続きです。
*OpenCVをインストール:
-[[Sourceforgeからダウンロード:http://sourceforge.net/project/showfiles.php?group_id=22870&package_id=16937]]
-http://boxheadroom.com/wiki/?OpenCV なども参照
**インストーラ版の場合
-インストーラはOpenCV_1.0.exe
-DLLをGIMPバイナリーのフォルダにコピー
-GIMP-Pythonから呼び出す時の都合で、C:\Program Files\OpenCV\bin 以下のDLLファイルをgimp24.exeと同じフォルダにコピーします。
-もっと良い方法が有ると思いますが。。。
**ZIP版の場合
-GIMPから使うだけなら、chopencv-2.5.0-win-binary.zip内のDLLをGIMP24.exeと同じフォルダにコピーするだけ。
-これだけだと、他のPythonプログラムからはOpenCVが使えないかと思います。
*[[CVtypes:http://pypi.python.org/pypi/CVtypes/]]
[[Sourceforgeからダウンロードできます:http://sourceforge.net/project/showfiles.php?group_id=82407]]
アーカイブ中のCVtypes.pyを、
_Pythonをインストールしたフォルダ/Lib/site-packages
にコピーします。
*パッチ
このままだと使いづらいので、私は以下のパッチをあてています。
CVtypes.pyの適当な行に以下を追加
_cvInpaint =cfunc(‘cvInpaint’, _cvDLL, None,
_ (‘src’, c_void_p, 1), # const CvArr* src
_ (‘mask’, c_void_p, 1), # CvArr* dst
_ (‘dst’, c_void_p, 1), # CvArr* dst
_ (‘flags’, c_int, 1), # int flags
_ (‘inpaintRadius’, c_double, 1), # double threshold1
_)

_def cvImageAsString(img):
_ btype = ctypes.c_char * img[0].imageSize
_ return btype.from_address(img[0].imageData)
_
*使い方
http://OpenCV.jp などとの違い。
使うには、
_from CVtypes import cv

OpenCVのCVCreateImage(~)などの関数名は
_cv.CreateImage
と、cvピリオドが頭に付く形に。定数なども同様に。
具体的なサンプルコードは、次の記事で。
[/pukiwiki]