OpenCVのinpaint関数をGIMPから(Python経由で)使えるようにしてみました。
処理結果はこちらのサンプルみたいな感じ。
あまり大げさなことは出来ませんが、小さいノイズを消したりするのに便利なので、個人的に手放せません。
以下コード
Tags: GIMP, OpenCV, Python
BoxHeadRoom蝸牛の一歩
|
|
GIMP2.4用のプラグインとして動かしてみました。
できたところまでメモ。
二つのレイヤーに ピーマンを少し動かした状態で描く。
マウス右ボタン -> フィルター ->Python ー>ofblur5
こんなダイアログが表示されます。

(直後は画面に反映されてません。画像左下のクイックマスクボタンで切り替えすると反映されます)

(左下、小さい赤い四角が見えてる場所)
ここまで。
欲しかった結果と違うなぁ~ と、最初はガッカリしたんですが、いろんなサンプル画像で遊んでみたら 使い方によっては面白いかも。
ところで、GIMPには、ピーマンのブラシが標準装備されていて、今回のサンプル画像はそれを使ってるのですが。。。なぜマスコットキャラクターではなく、ピーマン?
(こんなときは便利ですが。)
以下は作業メモ+プラグインのソースコード。
Tags: CG, GIMP, OpenCV, Pythonこちらの記事の続き。
ほとんど、GIMPとOpenCVのサンプルコードのひきうつしですが。。。
あらかじめ、CVtypes.pyに、前述の記事のパッチをあてておく必要があります。
OpenCVサンプルコード内 haarcascadesフォルダを中身のxmlファイルごとGIMPプラグインフォルダにコピー。
以下のコードをcvfacedetect.pyという名前で、GIMPプラグインフォルダ(GIMP24libgimp2.0plug-ins)に保存、GIMP次回起動時に認識される、はずです。
認識されていれば、GIMPで画像を開き、フィルターの中にOpenCVという階層が出来ます。その中のcvfacedetectを選ぶと、フィルタを実行します。
人物の顔が丸く選択されたら成功です。
実行自体は短いのですが、起動までに「か~な~り~」時間がかかるので実用性には欠けます。あくまでOpenCVを使ってみるサンプルコード、ということで。
卒業アルバムなど集合写真でやってみると、意外に引っかからない人が居たりして楽しかったり(汗
(続きを読む…)
自分が忘れた時のために、作業メモ
GIMP2.4 win32版のプラグインをPythonで書く インストール編の続きです。
Sourceforgeからダウンロードできます
アーカイブ中の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ピリオドが頭に付く形に。定数なども同様に。
具体的なサンプルコードは、次の記事で。
たとえ日本語で書かれてても、読むの大変そう。
wikibooksのBlenderチュートリアル。
オンラインで読めるGIMPの本。英語だけど。
大学のBlenderの授業の教材
テクスチャ生成ソフト。無料、らしい。
レイヤーマスクを使って。
Tags: Blender, GIMP