2016-08-04 10 views
0

画像のインデックス付けにネストされた繰り返しを使用しているPILを使用して画像のセグメンテーションを行っていますが、非常に遅く実行されます。 numpyインデックス配列内でのPIL画像の評価関数

def evalPixel((r,g,b), sess): 
    pixel = [float(r)/255, float(g)/255, float(b)/255] 
    test = sess.run(y, feed_dict={x: [pixel]}) 
    return test[0][0] 

... 
... 

# sess = sesion loaded from TensorFlow 
rgb = Image.open("face.jpg") 
height, width = rgb.size 

for y in range(height): 
    for x in range(width): 
     if (evalPixel(rgb.getpixel((x,y)), sess) < 0.6): 
      rgb.putpixel((x,y), 0) 

toimage(im).show() 

私はnumpyの

im = np.array(rgb) 
im[ evalPixel(im, sess) < 0.6 ] = 0 

の高度なインデックスを使用して、このような何かをしたい。しかし、それはで失敗する「とValueError:を解凍するためにあまりにも多くの値」。どうやってやるの?

答えて

0

以下を使用してみてください:

im = np.array(rgb) 
im = [[evalPixel(x,sess) < 0.6 for x in row] for row in im] 

行と列を生成するコンストラクタを使用することにより、誤って(この場合、タプル)は、単一の引数で関数を適用することを回避することが可能です行全体またはカラム。

0

あなたの関数evalPixelは最初の引数としてタプルをとりますが、numpyの配列にはタプルは含まれていません。 numpy配列で作業するには、その関数を書き直さなければなりません。

私はあなたのための実例を作ってみましたが、共有しているコードには多くの未知の変数が含まれています(あまりにも多すぎる)。evalPixel関数が何をすべきかはわかりません。

+0

このコードをご覧ください:https:// goo.gl/Nr5T1L – miguelote

関連する問題