2017-05-16 11 views
0

PythonイメージングライブラリとNumpyを使用して、ピクチャ内の特定の関心領域からピクセルデータを抽出する次のコードを実行しました。次のコードは、幅w(水平)と幅b(垂直)のマージンでカットし、マージン内のピクセルデータのみを含む新しいマトリックスを作成して、hの寸法wの複数の画像を撮ることになっています。データサイズは、単にこのプロセスを繰り返したいピクチャの数です。しかしピクチャからピクセルデータを抽出するコードのエラー

、私は、++プロンプトに戻りますが、メモ帳を使用して、コマンドプロンプトでこれを実行します。

はIndexError:インデックス982は、大きさと軸0のために範囲外にある975

私はこの問題を解決できる方法上の任意のアイデアエラー?これらの問題に対する一般的な解決策は、範囲を修正することでしたが、私の範囲(問題の領域に関する)に問題は見つかりません。ありがとう:)

def edit_data(data_size,a,b): 

    d = data_size 
    sample_file = im.open("C:\Research\data_1\sample (1).jpg") 
    w, h = sample_file.size 
    print(w,h) 

    gray_sample = np.zeros((d,(w-2*a),(h-2*a))) 


    for i in range(0, d): 
     file = im.open("C:\Research\data_1\sample (%d).jpg" % (i+1)) 

     for j in range(a, (w-a)): 

      for k in range(b, (h-b)): 
       r, g, b = file.getpixel((j, k)) 

       gray_sample[i][(j-a)][(k-b)] = (r*0.299 + g*0.587 + b*0.114)/255 

    return gray_sample 
#test the function 
a = edit_data(1, 30, 30) 
print(a.size) 

答えて

0

メッセージはそれほど明白ではないと思います。配列の1次元が975で、コードが982要素にアクセスしようとしています。 xy軸がどこかで間違っている可能性があります。

+0

アドバイスありがとうございます!確かに、私は実際にgray_sample変数の数が少ない配列を宣言したときに間違いを犯しました:) –

関連する問題