2017-03-02 21 views
0

免責事項:私はプログラミングに慣れていません。機能1の出力は2関数の別の関数への戻り値python

def img_to_color(path_file): 

# takes an image and calculates avg red/green/blue value 
color_avg = [red, green, blue] 
return color_avg   

def extract_RGB(path_folder): 

j = 0 
RGB = [] 
file_count = len(os.listdir(path_folder)) 
files = os.listdir(path_folder) 
while j < file_count: 
    img_to_color(path_folder + "/" + files[j]) 
    RGB.append(color_avg) 
    j = j+1 
X_training.append(trainingDataFolder(pfad, RGB)) 

、しかしRGB私は関数を呼び出していても、[]のまま動作しますimg_to_color機能を機能するように渡されていないようだと 次のコードは、動作しません。

+0

'X_training'は何ですか?それはどこで宣言されていますか? 'red'、' green'、 'blue'も同じです。 –

+0

赤、緑、青の計算を除外して短くしました。この関数は正常に動作します。 X_trainingも存在します(グローバルとして外部宣言されています)。 –

答えて

0

変数color_avgは、img_to_colorのローカル機能です。 extract_RGBの内部には存在しません。あなたが好きそれに変数を割り当てるためにどちらか持っているのでimg_to_colorは、値を返します。

color_avg = img_to_color(...)

または直接のような関数に戻り値を渡します。あなたは問題がある

RGB.append(img_to_color(...)

+0

ありがとう、スペンサー。 完全にそのように動作し、私はついにこれがどのように動作するか理解しています。 –

0

くぼみと。最初にthisとお読みください。

ところで、変数X_trainingはどこにも宣言されていないようですので、よりグローバルなコンテキストの一部であるかどうかはわかりませんでした。

コードは次のように記述する必要があります。

def img_to_color(path_file): 
    # takes an image and calculates avg red/green/blue value 
    color_avg = [red, green, blue] 
    return color_avg   

def extract_RGB(path_folder): 
    j = 0 
    RGB = [] 
    file_count = len(os.listdir(path_folder)) 
    files = os.listdir(path_folder) 
    while j < file_count: 
     color_avg = img_to_color(path_folder + "/" + files[j]) 
     RGB.append(color_avg) 
     j = j+1 
    X_training.append(trainingDataFolder(pfad, RGB))