<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BoxHeadRoom &#187; GIMP</title>
	<atom:link href="http://boxheadroom.com/tag/gimp/feed" rel="self" type="application/rss+xml" />
	<link>http://boxheadroom.com</link>
	<description>蝸牛の一歩</description>
	<lastBuildDate>Tue, 07 Feb 2012 13:41:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GIMPからcvInpaint処理(Python経由で)~画像の小キズ隠しに~</title>
		<link>http://boxheadroom.com/2008/11/01/gimp_cvinpaint_opencv</link>
		<comments>http://boxheadroom.com/2008/11/01/gimp_cvinpaint_opencv#comments</comments>
		<pubDate>Fri, 31 Oct 2008 19:26:53 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[CG]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[GIMP]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/?p=1993</guid>
		<description><![CDATA[
OpenCVのinpaint関数をGIMPから(Python経由で)使えるようにしてみました。
処理結果はこちらのサンプルみたいな感じ。

【動画】inpaint処理結果サンプル

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



関連

不要オブジェクトの除去 cvInpaint  Cサンプルコード(opencv.jp)
Gimp Python Documentation

オマケ

知って得する５つの『GIMP』トリック
「四角選択ー＞角丸」　一週間早く知りたかったー

わかってる不具合
なんでこうなるの？

フィルタ動作後、レイヤーが非表示になったままです。
表示してやると、処理が画面に反映されます
アンドゥーがききません。　

&#8593;
下記のプログラムが動くまでの道のり

GIMP (レタッチソフト)
GIMP2を使おう
Python
GIMP2.4 win32版のプラグインをPythonで書く　インストール編
OpenCV
CVtypes  PythonからOpenCVを使うためのライブラリ
今回はパッチなしで動くようにしてみました。
「CVtypes.py」OpenCVをctypes経由で使う


&#8593;
その他のメモ
cvSetDataなどを使い、以前よりも、ちょっとだけ、GIMPとOpenCVの間の画像データのやりとりが速くなったはず。


#!/usr/bin/env python
from gimpfu import *
import CVtypes as cv
import ctypes
import sys
gettext.install("gimp20-python", gimp.locale_directory, unicode=True)

def cvImageAsString(img):
    btype = ctypes.c_char * img[0].imageSize
    return btype.from_address(img[0].imageData)

_cvDLL = ctypes.cdll.cv100
cvInpaint =cv.cfunc('cvInpaint',_cvDLL, None,
    ('src', ctypes.c_void_p, 1), # const CvArr* src
    ('mask', ctypes.c_void_p, 1), [...]]]></description>
			<content:encoded><![CDATA[<div id="pukiwiki_content2" class="pukiwiki_content">
<p>OpenCVのinpaint関数をGIMPから(Python経由で)使えるようにしてみました。</p>
<p>処理結果はこちらのサンプルみたいな感じ。</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://video.nifty.com/cs/catalog/video_metadata/catalog_071111041075_1.htm" rel="nofollow">【動画】inpaint処理結果サンプル</a></li>
</ul>
<p>あまり大げさなことは出来ませんが、小さいノイズを消したりするのに便利なので、個人的に手放せません。</p>
<p>以下コード</p>
</div>
<p><span id="more-1993"></span></p>
<div id="pukiwiki_content3" class="pukiwiki_content">
<p>関連</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://opencv.jp/sample/special_transforms.html#inpaint" rel="nofollow">不要オブジェクトの除去 cvInpaint  Cサンプルコード(opencv.jp)</a></li>
<li><a href="http://www.jamesh.id.au/software/pygimp/pygimp.html" rel="nofollow">Gimp Python Documentation</a></li>
</ul>
<p>オマケ</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://www.lifehacker.jp/2008/10/gimp.html" rel="nofollow">知って得する５つの『GIMP』トリック</a><br />
「四角選択ー＞角丸」　一週間早く知りたかったー</li>
</ul>
<h2 id="content_1_0">わかってる不具合</h2>
<p>なんでこうなるの？</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li>フィルタ動作後、レイヤーが非表示になったままです。<br />
表示してやると、処理が画面に反映されます</li>
<li>アンドゥーがききません。　</li>
</ul>
<div class="jumpmenu"><a href="#pukiwiki_content3">&uarr;</a></div>
<h2 id="content_1_1">下記のプログラムが動くまでの道のり</h2>
<ul class="list2" style="padding-left:32px;margin-left:32px">
<li>GIMP (レタッチソフト)<br />
<a href="http://www.geocities.jp/gimproject/gimp2.0.html" rel="nofollow">GIMP2を使おう</a></li>
<li>Python<br />
<a href="http://boxheadroom.com/2007/12/16/gimp_python" rel="nofollow">GIMP2.4 win32版のプラグインをPythonで書く　インストール編</a></li>
<li>OpenCV</li>
<li>CVtypes  PythonからOpenCVを使うためのライブラリ<br />
今回はパッチなしで動くようにしてみました。<br />
<a href="http://boxheadroom.com/2007/12/19/cvtypes" rel="nofollow">「CVtypes.py」OpenCVをctypes経由で使う</a></li>
</ul>
<hr class="full_hr" />
<div class="jumpmenu"><a href="#pukiwiki_content3">&uarr;</a></div>
<h2 id="content_1_2">その他のメモ</h2>
<p>cvSetDataなどを使い、以前よりも、ちょっとだけ、GIMPとOpenCVの間の画像データのやりとりが速くなったはず。</p>
</div>
<pre class="code">
#!/usr/bin/env python
from gimpfu import *
import CVtypes as cv
import ctypes
import sys
gettext.install("gimp20-python", gimp.locale_directory, unicode=True)

def cvImageAsString(img):
    btype = ctypes.c_char * img[0].imageSize
    return btype.from_address(img[0].imageData)

_cvDLL = ctypes.cdll.cv100
cvInpaint =cv.cfunc('cvInpaint',_cvDLL, None,
    ('src', ctypes.c_void_p, 1), # const CvArr* src
    ('mask', ctypes.c_void_p, 1), # CvArr* dst
    ('dst', ctypes.c_void_p, 1), # CvArr* dst
    ('flags', ctypes.c_int, 1), # int flags
    ('inpaintRadius', ctypes.c_double, 1), # double threshold1
)
def cvinpaint(img,layer):
    r=10
    gimp.progress_init("cvInPaint")
    gimp.progress_update(0.5) #percnt 0 ->1.0
    flag,x0,y0,x1,y1=gimp.pdb.gimp_selection_bounds(img)
    ox,oy=layer.offsets
    x0-=ox; x1-=ox; y0-=oy; y1-=oy
    if not flag : return
    x0=max(x0-r,0)
    y0=max(y0-r,0)
    x1=min(x1+r,layer.width)
    y1=min(y1+r,layer.height)
    r=float(r)
    w=x1-x0; h=y1-y0
    p0=layer.get_pixel_rgn(x0,y0,w,h)
    src_img = cv.cvCreateImage( cv.CvSize( w,h), 8, p0.bpp )
    cv.cvSetData(src_img,str(p0[:,:]),w*p0.bpp)
#---------------
    stp=src_img[0].widthStep
    sstr=cvImageAsString(src_img)
    stp2=w*p0.bpp
    idx0=0
    for y in xrange(y0,y1):
        idx1=idx0+stp2
        p0[x0:x1,y]=sstr[idx0:idx1]
        idx0+=stp

#---------------
    if layer.bpp==4 :
        src4=src_img

        src_img=cv.cvCreateImage( cv.CvSize( w,h), 8, 3)
        cv.cvCvtColor( src4, src_img,cv.CV_BGRA2BGR )
    gimp.progress_update(0.6) #percnt 0 ->1.0
    layer.visible=False
    sel=img.selection
    ps=sel.get_pixel_rgn(x0+ox,y0+oy,w,h)

    mask_img = cv.cvCreateImage( cv.CvSize( w,h), 8, 1)
    cv.cvSetData(mask_img,str(ps[:,:]),w)
    dst_img = cv.cvCloneImage (src_img)

    gimp.progress_update(0.7) #percnt 0 ->1.0
    cvInpaint (src_img, mask_img, dst_img, cv.CV_INPAINT_TELEA, r)

    gimp.progress_update(0.8) #percnt 0 ->1.0
    if p0.bpp==4 :
        cv.cvCvtColor( dst_img, src4, cv.CV_BGR2BGRA )
        cv.cvReleaseImage(dst_img)
        cv.cvOrS(src4, cv.CvScalar(0,0,0,255.0), src4)
        dst_img=src4

    dstr=cvImageAsString(dst_img)
    stp=dst_img[0].widthStep
    stp2=w*p0.bpp
    idx0=0
    for y in xrange(y0,y1):
        idx1=idx0+stp2
        p0[x0:x1,y]=dstr[idx0:idx1]
        idx0+=stp
    cv.cvRelease(dst_img)
    cv.cvRelease(mask_img)
    cv.cvRelease(src_img)
    layer.visible=True
    gimp.displays_flush()
    gimp.progress_update(1.0)
    #img.undo_group_end()
register(
    "python-fu-cvinpaint",
    N_("CvInPaint OpenCV"),
    "Adds a layer of fog to the image.",
    "BoxHeadRoom",
    "BoxHeadroom.com",
    "2007",
    N_("_CvInPaint..."),
    "RGB*, GRAY*",
    [
        (PF_IMAGE, "image",       "Input image", None),
        (PF_DRAWABLE, "drawable", "Input drawable", None),
    ],
    [],
    cvinpaint,
    menu="&lt;Image&gt;/Filters/OpenCV",
    domain=("gimp20-python", gimp.locale_directory)
    )

main()
</pre>

	Tags: <a href="http://boxheadroom.com/tag/gimp" title="GIMP" rel="tag">GIMP</a>, <a href="http://boxheadroom.com/tag/opencv" title="OpenCV" rel="tag">OpenCV</a>, <a href="http://boxheadroom.com/tag/python" title="Python" rel="tag">Python</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://boxheadroom.com/2011/09/16/namedlist2" title="Pythonで名前つきリスト その2 (9月 16, 2011)">Pythonで名前つきリスト その2</a> (0)</li>
	<li><a href="http://boxheadroom.com/2011/02/11/urllib2_range" title="【Py】webページの先頭数バイトだけ取得 (2月 11, 2011)">【Py】webページの先頭数バイトだけ取得</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/10/29/wget_py" title="wget.py webをまとめて取得　などなど (10月 29, 2010)">wget.py webをまとめて取得　などなど</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/09/21/py_cui_progress_ba" title="CUIでプログレスバーもどき (9月 21, 2010)">CUIでプログレスバーもどき</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/09/18/matplotlib_delaunay" title="ドロネー三角形 matplotlibで (9月 18, 2010)">ドロネー三角形 matplotlibで</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2008/11/01/gimp_cvinpaint_opencv/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GIMP+Python オプティカルフローであそぶ　その2 CVtypes編</title>
		<link>http://boxheadroom.com/2008/03/22/opticalflowbm2</link>
		<comments>http://boxheadroom.com/2008/03/22/opticalflowbm2#comments</comments>
		<pubDate>Sat, 22 Mar 2008 06:45:22 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[CG]]></category>
		<category><![CDATA[GIMP]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/2008/03/22/opticalflowbm2</guid>
		<description><![CDATA[
GIMP2.4用のプラグインとして動かしてみました。
できたところまでメモ。
二つのレイヤーに　ピーマンを少し動かした状態で描く。


マウス右ボタン　－＞　フィルター　－＞Python ー＞ofblur5
こんなダイアログが表示されます。

と、動きの大きい部分（動きの絶対値）が選択されます。

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

（左下、小さい赤い四角が見えてる場所）
ここまで。
欲しかった結果と違うなぁ～　と、最初はガッカリしたんですが、いろんなサンプル画像で遊んでみたら　使い方によっては面白いかも。
ところで、GIMPには、ピーマンのブラシが標準装備されていて、今回のサンプル画像はそれを使ってるのですが。。。なぜマスコットキャラクターではなく、ピーマン？
(こんなときは便利ですが。)
以下は作業メモ＋プラグインのソースコード。



インテルから配布されてるOpenCV Pythonバインドだと、GIMPからPythonへのデータ転送が遅いので、もう一度CVtypesのお世話になることに。
(swig版に比べると、起動が遅くなるのですが。。。)
ここまでのあらすじ

GIMP2.4 win32版のプラグインをPythonで書く　インストール編
「CVtypes.py」OpenCVをctypes経由で使う
動作にはこのパッチが必要。
(ToDo  今後、パッチを当ててないCVｔｙpesで動くようにしないと)
PythonでOpenCV オプティカルフロー編
前回の記事。　むしろ、このサンプルコードみたく、動画の各コマに、線を描き入れるだけでもマンガの効果線みたいで面白いかも。
それはそれで作らないと。。。


今回のコード。自分用なので、print文　デバッグも残してあります。
_#!/usr/bin/env python
_
_from gimpfu import *
_import CVtypes as cv
_import math
_from itertools import izip
_gettext.install(&#34;gimp20-python&#34;, gimp.locale_directory, unicode=True)
_
_
_def ofblur5(img, lyr,lyr0,lyr1):
_#def ofblur5(img, lyr,lyr0,lyr1,sxy):
_    import sys
_    import os
_    p=os.path.abspath(os.path.dirname(sys.argv[0]))
_    fp=file(p+&#34;\\test.txt&#34;,&#34;a&#34;)
_    #print &#62;&#62;fp,p
_    #sys.stdout,tmp= fp,sys.stdout
_    [...]]]></description>
			<content:encoded><![CDATA[<div id="pukiwiki_content6" class="pukiwiki_content">
<p>GIMP2.4用のプラグインとして動かしてみました。<br />
できたところまでメモ。<br />
二つのレイヤーに　ピーマンを少し動かした状態で描く。</p>
<p><a href="http://boxheadroom.com/wp/wp-content/uploads/2008/03/p1.jpg" rel="nofollow"><img src="http://boxheadroom.com/wp/wp-content/uploads/2008/03/p1.jpg" alt="http://boxheadroom.com/wp/wp-content/uploads/2008/03/p1.jpg" /></a><br />
<a href="http://boxheadroom.com/wp/wp-content/uploads/2008/03/p2.jpg" rel="nofollow"><img src="http://boxheadroom.com/wp/wp-content/uploads/2008/03/p2.jpg" alt="http://boxheadroom.com/wp/wp-content/uploads/2008/03/p2.jpg" /></a></p>
<p>マウス右ボタン　－＞　フィルター　－＞Python ー＞ofblur5<br />
こんなダイアログが表示されます。<br />
<a href="http://boxheadroom.com/wp/wp-content/uploads/2008/03/d.jpg" rel="nofollow"><img src="http://boxheadroom.com/wp/wp-content/uploads/2008/03/d.jpg" alt="http://boxheadroom.com/wp/wp-content/uploads/2008/03/d.jpg" /></a></p>
<p>と、動きの大きい部分（動きの絶対値）が選択されます。<br />
<a href="http://boxheadroom.com/wp/wp-content/uploads/2008/03/select.jpg" rel="nofollow"><img src="http://boxheadroom.com/wp/wp-content/uploads/2008/03/select.jpg" alt="http://boxheadroom.com/wp/wp-content/uploads/2008/03/select.jpg" /></a></p>
<p>（直後は画面に反映されてません。画像左下のクイックマスクボタンで切り替えすると反映されます）<br />
<a href="http://boxheadroom.com/wp/wp-content/uploads/2008/03/select2.jpg" rel="nofollow"><img src="http://boxheadroom.com/wp/wp-content/uploads/2008/03/select2.jpg" alt="http://boxheadroom.com/wp/wp-content/uploads/2008/03/select2.jpg" /></a><br />
（左下、小さい赤い四角が見えてる場所）</p>
<p>ここまで。<br />
欲しかった結果と違うなぁ～　と、最初はガッカリしたんですが、いろんなサンプル画像で遊んでみたら　使い方によっては面白いかも。</p>
<p>ところで、GIMPには、ピーマンのブラシが標準装備されていて、今回のサンプル画像はそれを使ってるのですが。。。なぜマスコットキャラクターではなく、ピーマン？<br />
(こんなときは便利ですが。)</p>
<p>以下は作業メモ＋プラグインのソースコード。</p>
</div>
<p><span id="more-1360"></span></p>
<div id="pukiwiki_content7" class="pukiwiki_content">
<p>インテルから配布されてるOpenCV Pythonバインドだと、GIMPからPythonへのデータ転送が遅いので、もう一度CVtypesのお世話になることに。<br />
(swig版に比べると、起動が遅くなるのですが。。。)</p>
<p>ここまでのあらすじ</p>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://boxheadroom.com/2007/12/16/gimp_python" rel="nofollow">GIMP2.4 win32版のプラグインをPythonで書く　インストール編</a></li>
<li><a href="http://boxheadroom.com/2007/12/19/cvtypes" rel="nofollow">「CVtypes.py」OpenCVをctypes経由で使う</a><br />
動作にはこのパッチが必要。<br />
(ToDo  今後、パッチを当ててないCVｔｙpesで動くようにしないと)</li>
<li><a href="http://boxheadroom.com/2008/03/15/opticalflowbm1" rel="nofollow">PythonでOpenCV オプティカルフロー編</a><br />
前回の記事。　むしろ、このサンプルコードみたく、動画の各コマに、線を描き入れるだけでもマンガの効果線みたいで面白いかも。<br />
それはそれで作らないと。。。</li>
</ul>
<hr class="full_hr" />
<p>今回のコード。自分用なので、print文　デバッグも残してあります。</p>
<p>_#!/usr/bin/env python<br />
_<br />
_from gimpfu import *<br />
_import CVtypes as cv<br />
_import math<br />
_from itertools import izip<br />
_gettext.install(&quot;gimp20-python&quot;, gimp.locale_directory, unicode=True)<br />
_<br />
_<br />
_def ofblur5(img, lyr,lyr0,lyr1):<br />
_#def ofblur5(img, lyr,lyr0,lyr1,sxy):<br />
_    import sys<br />
_    import os<br />
_    p=os.path.abspath(os.path.dirname(sys.argv[0]))<br />
_    fp=file(p+&quot;\\test.txt&quot;,&quot;a&quot;)<br />
_    #print &gt;&gt;fp,p<br />
_    #sys.stdout,tmp= fp,sys.stdout<br />
_    #print code<br />
_    #img=gimp.image_list()[0]<br />
_    #lyr=img.active_layer<br />
_    #s=img.selection<br />
_    w,h=x1,y1=lyr.width,lyr.height<br />
_    w0,h0=lyr0.width,lyr0.height<br />
_    w1,h1=lyr1.width,lyr1.height<br />
_<br />
_    if  w0!=w1 or h0!=h1 :<br />
_        print &gt;&gt;fp,&quot;size not match&quot;<br />
_        return<br />
_<br />
_    pr0=lyr0.get_pixel_rgn(0,0,w0,h0)<br />
_    pr1=lyr1.get_pixel_rgn(0,0,w0,h0)<br />
_<br />
_    cvimg0 = cv.cvCreateImage( cv.CvSize( w0,h0), 8, pr0.bpp )<br />
_    cvimg1 = cv.cvCreateImage( cv.CvSize( w0,h0), 8, pr1.bpp )<br />
_    sstr0=cv.cvImageAsString(cvimg0)<br />
_    sstr1=cv.cvImageAsString(cvimg1)<br />
_    if len(sstr0)==len(pr0[:,:]) :<br />
_        sstr0[:]=pr0[ : , : ]<br />
_    else :<br />
_        ws=cvimg0.contents.widthStep<br />
_        for y in xrange(h):<br />
_            i0=y*ws<br />
_            i1=i0+w<br />
_            sstr0[ i0 : i1 ]=pr0[ : , y]<br />
_<br />
_    #print &gt;&gt;fp, cvimg1.contents.widthStep,&quot; &quot;,len(pr1[ : , 1])<br />
_    if len(sstr1)==len(pr1[:,:]) :<br />
_        sstr1[:]=pr1[ : , : ]<br />
_<br />
_    else :<br />
_        ws=cvimg1.contents.widthStep<br />
_        for y in xrange(h):<br />
_            i0=y*ws<br />
_            i1=i0+w<br />
_            sstr1[ i0 : i1 ]=pr1[ : , y]<br />
_<br />
_    &quot;&quot;&quot;for y  in xrange(h):<br />
_        for x in xrange(w):<br />
_            src_img[x,y]=cv.cvScalar(*[ord(x) for x in pr0[x,y]])<br />
_    &quot;&quot;&quot;<br />
_<br />
_    block_size = 16;<br />
_    shift_size = 1;<br />
_<br />
_    rows = int (math.ceil (h / float(block_size)))<br />
_    cols = int (math.ceil (w/ float(block_size)))<br />
_    velx = cv.cvCreateMat (rows, cols, 5) #CV_32FC1<br />
_    vely = cv.cvCreateMat (rows, cols, 5) #CV_32FC1<br />
_    cv.cvSetZero (velx)<br />
_    cv.cvSetZero (vely)<br />
_<br />
_<br />
_<br />
_    #cvReleaseImage(img)<br />
_    gray0 = cv.cvCreateImage( cv.CvSize( w0,h0), 8, 1 )<br />
_    gray1 = cv.cvCreateImage( cv.CvSize( w0,h0), 8, 1 )<br />
_    if pr0.bpp==3 :<br />
_        cv.cvCvtColor(cvimg0, gray0, cv.CV_RGB2GRAY)<br />
_    elif pr0.bpp==4 :<br />
_        cv.cvCvtColor(cvimg0, gray0, cv.CV_RGBA2GRAY)<br />
_<br />
_    if pr1.bpp==3 :<br />
_        cv.cvCvtColor(cvimg1, gray1, cv.CV_RGB2GRAY)<br />
_    elif pr1.bpp==4 :<br />
_        cv.cvCvtColor(cvimg1, gray1, cv.CV_RGBA2GRAY)<br />
_<br />
_    #&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
_    #main<br />
_    blocksize = cv.CvSize (block_size ,block_size )<br />
_    shiftsize = cv.CvSize (shift_size,shift_size)<br />
_    max_range = cv.CvSize (50, 50)<br />
_    cv.cvCalcOpticalFlowBM (gray0,gray1, blocksize, shiftsize,\<br />
_                       max_range,0,velx,vely)<br />
_<br />
_<br />
_    fx=cv.cvMatAsFloat(velx)<br />
_    fy=cv.cvMatAsFloat(vely)<br />
_    #&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
_<br />
_    if pr0.bpp==3 :<br />
_        cv.cvCvtColor(gray0, cvimg0,  cv.CV_GRAY2RGB)<br />
_    elif pr0.bpp==4 :<br />
_        cv.cvCvtColor(gray0, cvimg0,  cv.CV_GRAY2RGBA)<br />
_        cv.cvOrS(cvimg0, cv.CvScalar(0,0,0,255.0), cvimg0)<br />
_    if pr1.bpp==3 :<br />
_        cv.cvCvtColor(gray1, cvimg1,  cv.CV_GRAY2RGB)<br />
_    elif pr1.bpp==4 :<br />
_        cv.cvCvtColor(gray1, cvimg1,  cv.CV_GRAY2RGBA)<br />
_        cv.cvOrS(cvimg1, cv.CvScalar(0,0,0,255.0), cvimg1)<br />
_    #pr0[ : , : ]=sstr0[ : ]<br />
_    #pr1[ : , : ]=sstr1[ : ]<br />
_<br />
_<br />
_    cvsmall=cv.cvCreateImage( cv.CvSize( cols,rows), 8, 1 )<br />
_    smallstr=cv.cvImageAsString(cvsmall)<br />
_    ws=cvsmall.contents.widthStep<br />
_<br />
_    if len(smallstr)==cols*rows :<br />
_        smallstr[:]=&quot;&quot;.join( chr(int(abs(i)+abs(j))*2) for i,j in izip(fx,fy))<br />
_    else :<br />
_        for y in xrange(rows):<br />
_            i0=y*ws<br />
_            i1=i0+cols<br />
_            b=y*cols<br />
_            smallstr[i0 : i1] = &quot;&quot;.join( chr(int(abs(i)+abs(i))*2)  for i, j in izip(fx[b:b+cols],fy[b:b+cols]))<br />
_<br />
_    cvlarge= cv.cvCreateImage( cv.CvSize(w, h ), 8, 1 )<br />
_    cv.cvResize( cvsmall, cvlarge, cv.CV_INTER_CUBIC )<br />
_    largestr=cv.cvImageAsString(cvlarge)<br />
_    #print &gt;&gt;fp, largestr<br />
_    pdb.gimp_selection_all(img)<br />
_    s0=img.selection<br />
_    prs=s0.get_pixel_rgn(0,0,w , h )<br />
_    prs[:,:]=largestr[:]<br />
_    #prs[:,:]=&quot;\xff&quot;*(w*h)<br />
_    s0.flush()<br />
_    #cv.cvNamedWindow(&quot;test&quot;)<br />
_    #cv.cvShowImage(&quot;test&quot;,cvlarge)<br />
_<br />
_    &quot;&quot;&quot;<br />
_    ax=sxy<br />
_    ay=sxy<br />
_    dox=1<br />
_    doy=1<br />
_    displace_type=1<br />
_<br />
_<br />
_    pdb.plug_in_displace(img, dw, ay, ay, dox, doy, mapx, mapy, displace_type)<br />
_    &quot;&quot;&quot;<br />
_    #sys.stdout=tmp<br />
_<br />
_register(<br />
_        &quot;python-fu-ofblur5&quot;,<br />
_        N_(&quot;python-fu-ofblur5 opencv&quot;),<br />
_        &quot;python-fu-pfblur4 opencv&quot;,<br />
_        &quot;boxheadroom&quot;,<br />
_        &quot;boxheadroom&quot;,<br />
_        &quot;2008&quot;,<br />
_        N_(&quot;_ofblur5&quot;),<br />
_        &quot;RGB*, GRAY*&quot;,<br />
_        [<br />
_            (PF_IMAGE, &quot;img&quot;,       &quot;Input image&quot;, None),<br />
_            (PF_DRAWABLE, &quot;lyr&quot;, &quot;Input layer&quot;, None),<br />
_            (PF_DRAWABLE, &quot;img0&quot;, &quot;current image&quot;, None),<br />
_            (PF_DRAWABLE, &quot;img1&quot;, &quot;previous &quot;, None),<br />
_            #(PF_SLIDER, &quot;sxy&quot;, _(&quot;_blur  strength&quot;), 5.0, (0, 20, 0.1)),<br />
_<br />
_        ],<br />
_        [],<br />
_        ofblur5,<br />
_        menu=&quot;&lt;Image&gt;/Filters/Python&quot;,<br />
_        domain=(&quot;gimp20-python&quot;, gimp.locale_directory)<br />
_    )<br />
_<br />
_main()<br />
_</p>
</div>

	Tags: <a href="http://boxheadroom.com/tag/cg" title="CG" rel="tag">CG</a>, <a href="http://boxheadroom.com/tag/gimp" title="GIMP" rel="tag">GIMP</a>, <a href="http://boxheadroom.com/tag/opencv" title="OpenCV" rel="tag">OpenCV</a>, <a href="http://boxheadroom.com/tag/python" title="Python" rel="tag">Python</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://boxheadroom.com/2011/09/16/namedlist2" title="Pythonで名前つきリスト その2 (9月 16, 2011)">Pythonで名前つきリスト その2</a> (0)</li>
	<li><a href="http://boxheadroom.com/2011/02/11/urllib2_range" title="【Py】webページの先頭数バイトだけ取得 (2月 11, 2011)">【Py】webページの先頭数バイトだけ取得</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/10/29/wget_py" title="wget.py webをまとめて取得　などなど (10月 29, 2010)">wget.py webをまとめて取得　などなど</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/09/21/py_cui_progress_ba" title="CUIでプログレスバーもどき (9月 21, 2010)">CUIでプログレスバーもどき</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/09/18/matplotlib_delaunay" title="ドロネー三角形 matplotlibで (9月 18, 2010)">ドロネー三角形 matplotlibで</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2008/03/22/opticalflowbm2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GIMPで顔認識（Python経由でOpenCV）</title>
		<link>http://boxheadroom.com/2007/12/20/cvfacedetect</link>
		<comments>http://boxheadroom.com/2007/12/20/cvfacedetect#comments</comments>
		<pubDate>Thu, 20 Dec 2007 02:01:18 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[CG]]></category>
		<category><![CDATA[GIMP]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/2007/12/20/cvfacedetect</guid>
		<description><![CDATA[こちらの記事の続き。
ほとんど、GIMPとOpenCVのサンプルコードのひきうつしですが。。。
あらかじめ、CVtypes.pyに、前述の記事のパッチをあてておく必要があります。
OpenCVサンプルコード内　haarcascadesフォルダを中身のxmlファイルごとGIMPプラグインフォルダにコピー。
以下のコードをcvfacedetect.pyという名前で、GIMPプラグインフォルダ(GIMP24\lib\gimp\2.0\plug-ins)に保存、GIMP次回起動時に認識される、はずです。
認識されていれば、GIMPで画像を開き、フィルターの中にOpenCVという階層が出来ます。その中のcvfacedetectを選ぶと、フィルタを実行します。
人物の顔が丸く選択されたら成功です。
実行自体は短いのですが、起動までに「か～な～り～」時間がかかるので実用性には欠けます。あくまでOpenCVを使ってみるサンプルコード、ということで。
卒業アルバムなど集合写真でやってみると、意外に引っかからない人が居たりして楽しかったり（汗


#!/usr/bin/env python
from gimpfu import *
from CVtypes  import cv

import sys
import os
import time

gettext.install("gimp20-python", gimp.locale_directory, unicode=True)

# Global Variables
cascade = None
pth=os.path.abspath(os.path.dirname(sys.argv[0]))
cascade_name = pth+"./haarcascades/haarcascade_frontalface_alt.xml"

def cvfacedetect(img,layer):
    img.undo_group_start()
    cascade = cv.LoadHaarClassifierCascade( cascade_name, cv.Size(1,1) )
    if not cascade : return
    storage = cv.CreateMemStorage(0)
    gimp.progress_init("cvFaceDetect")
    [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://boxheadroom.com/2007/12/19/cvtypes">こちらの記事</a>の続き。</p>
<p>ほとんど、GIMPとOpenCVのサンプルコードのひきうつしですが。。。</p>
<p>あらかじめ、CVtypes.pyに、<a href="http://boxheadroom.com/2007/12/19/cvtypes"><strong>前述の記事のパッチ</strong></a>をあてておく必要があります。</p>
<p>OpenCVサンプルコード内　haarcascadesフォルダを中身のxmlファイルごとGIMPプラグインフォルダにコピー。<br />
以下のコードをcvfacedetect.pyという名前で、GIMPプラグインフォルダ(GIMP24\lib\gimp\2.0\plug-ins)に保存、GIMP次回起動時に認識される、はずです。</p>
<p>認識されていれば、GIMPで画像を開き、フィルターの中にOpenCVという階層が出来ます。その中のcvfacedetectを選ぶと、フィルタを実行します。</p>
<p>人物の顔が丸く選択されたら成功です。<br />
実行自体は短いのですが、起動までに「か～な～り～」時間がかかるので実用性には欠けます。あくまでOpenCVを使ってみるサンプルコード、ということで。</p>
<p>卒業アルバムなど集合写真でやってみると、意外に引っかからない人が居たりして楽しかったり（汗<br />
<span id="more-1277"></span></p>
<pre class="code"><tt>
#!/usr/bin/env python
from gimpfu import *
from CVtypes  import cv

import sys
import os
import time

gettext.install("gimp20-python", gimp.locale_directory, unicode=True)

# Global Variables
cascade = None
pth=os.path.abspath(os.path.dirname(sys.argv[0]))
cascade_name = pth+"./haarcascades/haarcascade_frontalface_alt.xml"

def cvfacedetect(img,layer):
    img.undo_group_start()
    cascade = cv.LoadHaarClassifierCascade( cascade_name, cv.Size(1,1) )
    if not cascade : return
    storage = cv.CreateMemStorage(0)
    gimp.progress_init("cvFaceDetect")
    gimp.progress_update(0.5) #percnt 0 ->1.0
    min_size = cv.Size(20,20)
    image_scale = 1.3
    haar_scale = 1.2
    min_neighbors = 2
    haar_flags = 0
    ox,oy=layer.offsets
    x0,y0=0,0
    w,h=x1,y1=layer.width,layer.height
    p0=layer.get_pixel_rgn(x0,y0,w,h)
    src_img = cv.CreateImage( cv.Size( w,h), 8, p0.bpp )
    sstr=cv.ImageAsString(src_img)
    stp=src_img.contents.widthStep
    stp2=w*p0.bpp
    idx0=0
    for y in xrange(y0,y1):
        idx1=idx0+stp2
        sstr[idx0:idx1]=p0[x0:x1,y:y+1]
        idx0+=stp
    if p0.bpp==1 :
        gray = src_img
    else :
        gray = cv.CreateImage( cv.Size(w,h), 8, 1 )
        cv.CvtColor( src_img, gray, [cv.RGB2GRAY,cv.RGBA2GRAY][p0.bpp-3] )
    small_img = cv.CreateImage( cv.Size( int(round (w/image_scale)),
			 int(round (h/image_scale))), 8, 1 )
    cv.Resize( gray, small_img, cv.INTER_LINEAR )
    cv.EqualizeHist( small_img, small_img )
    cv.ClearMemStorage( storage )
    faces=[]
    if( cascade ):
        faces = cv.HaarDetectObjects( small_img, cascade, storage,
                        haar_scale, min_neighbors, haar_flags, min_size )
    if faces:
        for r in faces:
            sx0 =  ox+int(r.x*image_scale);   sy0=oy+int(r.y*image_scale)
            sw =  int(r.width*image_scale); sh=int(r.height*image_scale)
            gimp.pdb.gimp_ellipse_select(img,sx0,sy0,sw,sh,CHANNEL_OP_ADD,True,False,0)
    if gray!=src_img:
        cv.ReleaseImage(gray)
    cv.ReleaseImage(small_img)
    cv.ReleaseImage(src_img)
    layer.visible=True
    gimp.displays_flush()
    img.undo_group_end()
register(
    "python-fu-cvfacedetect",
    N_("CvFaceDetect OpenCV"),
    "Select Faces .",
    "BoxHeadRoom",
    "BoxHeadroom.com",
    "2007",
    N_("_CvFaceDetect..."),
    "RGB*, GRAY*",
    [
        (PF_IMAGE, "image",       "Input image", None),
        (PF_DRAWABLE, "drawable", "Input drawable", None),
    ],
    [],
    cvfacedetect,

    menu="&lt;image&gt;/Filters/OpenCV",
    domain=("gimp20-python", gimp.locale_directory)
    )

main()

</tt></pre>

	Tags: <a href="http://boxheadroom.com/tag/gimp" title="GIMP" rel="tag">GIMP</a>, <a href="http://boxheadroom.com/tag/opencv" title="OpenCV" rel="tag">OpenCV</a>, <a href="http://boxheadroom.com/tag/python" title="Python" rel="tag">Python</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://boxheadroom.com/2011/09/16/namedlist2" title="Pythonで名前つきリスト その2 (9月 16, 2011)">Pythonで名前つきリスト その2</a> (0)</li>
	<li><a href="http://boxheadroom.com/2011/02/11/urllib2_range" title="【Py】webページの先頭数バイトだけ取得 (2月 11, 2011)">【Py】webページの先頭数バイトだけ取得</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/10/29/wget_py" title="wget.py webをまとめて取得　などなど (10月 29, 2010)">wget.py webをまとめて取得　などなど</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/09/21/py_cui_progress_ba" title="CUIでプログレスバーもどき (9月 21, 2010)">CUIでプログレスバーもどき</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/09/18/matplotlib_delaunay" title="ドロネー三角形 matplotlibで (9月 18, 2010)">ドロネー三角形 matplotlibで</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2007/12/20/cvfacedetect/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>「CVtypes.py」OpenCVをctypes経由で使う</title>
		<link>http://boxheadroom.com/2007/12/19/cvtypes</link>
		<comments>http://boxheadroom.com/2007/12/19/cvtypes#comments</comments>
		<pubDate>Wed, 19 Dec 2007 09:44:03 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[CG]]></category>
		<category><![CDATA[GIMP]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/2007/12/19/cvtypes</guid>
		<description><![CDATA[
自分が忘れた時のために、作業メモ
GIMP2.4 win32版のプラグインをPythonで書く　インストール編の続きです。
OpenCVをインストール:

Sourceforgeからダウンロード
http://boxheadroom.com/wiki/?OpenCV なども参照

&#8593;
インストーラ版の場合

インストーラはOpenCV_1.0.exe
DLLをGIMPバイナリーのフォルダにコピー
GIMP-Pythonから呼び出す時の都合で、C:\Program Files\OpenCV\bin　以下のDLLファイルをgimp24.exeと同じフォルダにコピーします。
もっと良い方法が有ると思いますが。。。

&#8593;
ZIP版の場合

GIMPから使うだけなら、chopencv-2.5.0-win-binary.zip内のDLLをGIMP24.exeと同じフォルダにコピーするだけ。
これだけだと、他のPythonプログラムからはOpenCVが使えないかと思います。

&#8593;
CVtypes
Sourceforgeからダウンロードできます
アーカイブ中のCVtypes.pyを、
_Pythonをインストールしたフォルダ/Lib/site-packages
にコピーします。
&#8593;
パッチ
このままだと使いづらいので、私は以下のパッチをあてています。
CVtypes.pyの適当な行に以下を追加
_cvInpaint =cfunc(&#8217;cvInpaint&#8217;, _cvDLL, None,
_    (&#8217;src&#8217;, c_void_p, 1), # const CvArr* src
_    (&#8217;mask&#8217;, c_void_p, 1), # CvArr* dst
_    (&#8217;dst&#8217;, c_void_p, 1), # CvArr* dst
_    (&#8217;flags&#8217;, c_int, 1), # int flags
_    (&#8217;inpaintRadius&#8217;, c_double, 1), # double threshold1
_)
_def cvImageAsString(img):
_  [...]]]></description>
			<content:encoded><![CDATA[<div id="pukiwiki_content9" class="pukiwiki_content">
<p>自分が忘れた時のために、作業メモ</p>
<p><a href="http://boxheadroom.com/2007/12/16/gimp_python" rel="nofollow">GIMP2.4 win32版のプラグインをPythonで書く　インストール編</a>の続きです。</p>
<h2 id="content_1_0">OpenCVをインストール:</h2>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=22870&amp;amp;package_id=16937" rel="nofollow">Sourceforgeからダウンロード</a></li>
<li><a href="http://boxheadroom.com/wiki/?OpenCV" rel="nofollow">http://boxheadroom.com/wiki/?OpenCV</a> なども参照</li>
</ul>
<div class="jumpmenu"><a href="#pukiwiki_content9">&uarr;</a></div>
<h3 id="content_1_1">インストーラ版の場合</h3>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li>インストーラはOpenCV_1.0.exe</li>
<li>DLLをGIMPバイナリーのフォルダにコピー</li>
<li>GIMP-Pythonから呼び出す時の都合で、C:\Program Files\OpenCV\bin　以下のDLLファイルをgimp24.exeと同じフォルダにコピーします。</li>
<li>もっと良い方法が有ると思いますが。。。</li>
</ul>
<div class="jumpmenu"><a href="#pukiwiki_content9">&uarr;</a></div>
<h3 id="content_1_2">ZIP版の場合</h3>
<ul class="list1" style="padding-left:16px;margin-left:16px">
<li>GIMPから使うだけなら、chopencv-2.5.0-win-binary.zip内のDLLをGIMP24.exeと同じフォルダにコピーするだけ。</li>
<li>これだけだと、他のPythonプログラムからはOpenCVが使えないかと思います。</li>
</ul>
<div class="jumpmenu"><a href="#pukiwiki_content9">&uarr;</a></div>
<h2 id="content_1_3"><a href="http://pypi.python.org/pypi/CVtypes/" rel="nofollow">CVtypes</a></h2>
<p><a href="http://sourceforge.net/project/showfiles.php?group_id=82407" rel="nofollow">Sourceforgeからダウンロードできます</a><br />
アーカイブ中のCVtypes.pyを、<br />
_Pythonをインストールしたフォルダ/Lib/site-packages<br />
にコピーします。</p>
<div class="jumpmenu"><a href="#pukiwiki_content9">&uarr;</a></div>
<h2 id="content_1_4">パッチ</h2>
<p>このままだと使いづらいので、私は以下のパッチをあてています。<br />
CVtypes.pyの適当な行に以下を追加<br />
_cvInpaint =cfunc(&#8217;cvInpaint&#8217;, _cvDLL, None,<br />
_    (&#8217;src&#8217;, c_void_p, 1), # const CvArr* src<br />
_    (&#8217;mask&#8217;, c_void_p, 1), # CvArr* dst<br />
_    (&#8217;dst&#8217;, c_void_p, 1), # CvArr* dst<br />
_    (&#8217;flags&#8217;, c_int, 1), # int flags<br />
_    (&#8217;inpaintRadius&#8217;, c_double, 1), # double threshold1<br />
_)</p>
<p>_def cvImageAsString(img):<br />
_    btype = ctypes.c_char * img[0].imageSize<br />
_    return btype.from_address(img[0].imageData)<br />
_</p>
<div class="jumpmenu"><a href="#pukiwiki_content9">&uarr;</a></div>
<h2 id="content_1_5">使い方</h2>
<p><a href="http://OpenCV.jp" rel="nofollow">http://OpenCV.jp</a>　などとの違い。<br />
使うには、<br />
_from CVtypes import cv</p>
<p>OpenCVのCVCreateImage(~)などの関数名は<br />
_cv.CreateImage<br />
と、cvピリオドが頭に付く形に。定数なども同様に。<br />
具体的なサンプルコードは、次の記事で。</p>
</div>

	Tags: <a href="http://boxheadroom.com/tag/gimp" title="GIMP" rel="tag">GIMP</a>, <a href="http://boxheadroom.com/tag/opencv" title="OpenCV" rel="tag">OpenCV</a>, <a href="http://boxheadroom.com/tag/python" title="Python" rel="tag">Python</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://boxheadroom.com/2011/09/16/namedlist2" title="Pythonで名前つきリスト その2 (9月 16, 2011)">Pythonで名前つきリスト その2</a> (0)</li>
	<li><a href="http://boxheadroom.com/2011/02/11/urllib2_range" title="【Py】webページの先頭数バイトだけ取得 (2月 11, 2011)">【Py】webページの先頭数バイトだけ取得</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/10/29/wget_py" title="wget.py webをまとめて取得　などなど (10月 29, 2010)">wget.py webをまとめて取得　などなど</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/09/21/py_cui_progress_ba" title="CUIでプログレスバーもどき (9月 21, 2010)">CUIでプログレスバーもどき</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/09/18/matplotlib_delaunay" title="ドロネー三角形 matplotlibで (9月 18, 2010)">ドロネー三角形 matplotlibで</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2007/12/19/cvtypes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>無料で読めるCG関連の本（でも英語）他</title>
		<link>http://boxheadroom.com/2007/12/17/cg071217</link>
		<comments>http://boxheadroom.com/2007/12/17/cg071217#comments</comments>
		<pubDate>Mon, 17 Dec 2007 12:45:50 +0000</pubDate>
		<dc:creator>boxheadroom</dc:creator>
				<category><![CDATA[Link]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[GIMP]]></category>

		<guid isPermaLink="false">http://boxheadroom.com/2007/12/17/cg071217</guid>
		<description><![CDATA[
たとえ日本語で書かれてても、読むの大変そう。

Blender 3D： Noob to Pro
wikibooksのBlenderチュートリアル。
&#8593;
GIMP SAVVY
オンラインで読めるGIMPの本。英語だけど。
&#8593;
Tufts Open Courseware (of Tufts University)BlenderNewbies
大学のBlenderの授業の教材

&#8593;
Wiiリモコンでなんでもホワイトボードに変える魔法のような動画

&#8593;
Blender Open Material Repository
&#8593;
Makehuman 0.9.1 RC1 is ready!!
&#8593;
サイコロの作り方
&#8593;
Mapzone
&#8593;
Mapzone Tutorials
テクスチャ生成ソフト。無料、らしい。

&#8593;
24 Sweet Brushes for GIMP and Photoshop
&#8593;
GIMP 白黒写真の一部だけ彩色
レイヤーマスクを使って。


	Tags: Blender, GIMP

	Related posts
	
	BGEで日本語表示（仮） (0)
	Blender 2010 ゲームコンテストの優勝は“Lucy and The Time Machine” (0)
	Blender (0)
	&#8220;$1 Recognizer&#8221; JavaScriptでマウスジェスチャー認識サンプルコード (0)
	GIMPからcvInpaint処理(Python経由で)~画像の小キズ隠しに~ (0)


]]></description>
			<content:encoded><![CDATA[<div id="pukiwiki_content11" class="pukiwiki_content">
<p>たとえ日本語で書かれてても、読むの大変そう。</p>
<hr class="full_hr" />
<h2 id="content_1_0"><a href="http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro" rel="nofollow">Blender 3D： Noob to Pro</a></h2>
<p>wikibooksのBlenderチュートリアル。</p>
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_1"><a href="http://gimp-savvy.com/" rel="nofollow">GIMP SAVVY</a></h2>
<p>オンラインで読めるGIMPの本。英語だけど。</p>
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_2"><a href="http://blendernewbies.blogspot.com/2007/09/complete-course-materials-for-blender.html" rel="nofollow">Tufts Open Courseware (of Tufts University)BlenderNewbies</a></h2>
<p>大学のBlenderの授業の教材</p>
<hr class="full_hr" />
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_3"><a href="http://www.gizmodo.jp/2007/12/wii_44.html" rel="nofollow">Wiiリモコンでなんでもホワイトボードに変える魔法のような動画</a></h2>
<hr class="full_hr" />
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_4"><a href="http://www.blender-materials.org/" rel="nofollow">Blender Open Material Repository</a></h2>
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_5"><a href="http://www.dedalo-3d.com/" rel="nofollow">Makehuman 0.9.1 RC1 is ready!!</a></h2>
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_6"><a href="http://cola.wikidot.com/using-blender-software" rel="nofollow">サイコロの作り方</a></h2>
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_7"><a href="http://www.mapzoneeditor.com/" rel="nofollow">Mapzone</a></h2>
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_8"><a href="http://www.mapzonetutorials.com/" rel="nofollow">Mapzone Tutorials</a></h2>
<p>テクスチャ生成ソフト。無料、らしい。</p>
<hr class="full_hr" />
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_9"><a href="http://www.kristarella.com/2007/11/24-sweet-gimp-and-photoshop-brushes/" rel="nofollow">24 Sweet Brushes for GIMP and Photoshop</a></h2>
<div class="jumpmenu"><a href="#pukiwiki_content11">&uarr;</a></div>
<h2 id="content_1_10"><a href="http://www.gimp.org/tutorials/Selective_Color/" rel="nofollow">GIMP 白黒写真の一部だけ彩色</a></h2>
<p>レイヤーマスクを使って。</p>
</div>

	Tags: <a href="http://boxheadroom.com/tag/blender" title="Blender" rel="tag">Blender</a>, <a href="http://boxheadroom.com/tag/gimp" title="GIMP" rel="tag">GIMP</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://boxheadroom.com/2010/04/01/bge_japanese" title="BGEで日本語表示（仮） (4月 1, 2010)">BGEで日本語表示（仮）</a> (0)</li>
	<li><a href="http://boxheadroom.com/2010/03/18/bge2010" title="Blender 2010 ゲームコンテストの優勝は“Lucy and The Time Machine” (3月 18, 2010)">Blender 2010 ゲームコンテストの優勝は“Lucy and The Time Machine”</a> (0)</li>
	<li><a href="http://boxheadroom.com/blender" title="Blender (6月 3, 2009)">Blender</a> (0)</li>
	<li><a href="http://boxheadroom.com/2008/11/08/1dollar_recognizer_" title="&#8220;$1 Recognizer&#8221; JavaScriptでマウスジェスチャー認識サンプルコード (11月 8, 2008)">&#8220;$1 Recognizer&#8221; JavaScriptでマウスジェスチャー認識サンプルコード</a> (0)</li>
	<li><a href="http://boxheadroom.com/2008/11/01/gimp_cvinpaint_opencv" title="GIMPからcvInpaint処理(Python経由で)~画像の小キズ隠しに~ (11月 1, 2008)">GIMPからcvInpaint処理(Python経由で)~画像の小キズ隠しに~</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://boxheadroom.com/2007/12/17/cg071217/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

