2012-04-26 9 views
2

私は現在、私がメインに.ppmファイルをロードして、許可する一連の機能を実行できるようになり、学校のためのプログラムを書いているにPythonで2D-配列要素を移動しますユーザは様々な方法で表示された画像ファイルを操作する(これはまた別の機能を介して行われる)。私がこのファイルを操作できるようにするには、水平軸を横切って「フリップ」することです。したがって、各行の要素を「反対の」位置に移動する機能が必要です。例えば、私の配列が[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]のように見えたら、私はそれを回す関数が必要です[ 14、13、12、11、10、9、8、7、6、5、4、3、2、機能は、彼らの「反対」側

注:すべての3つの要素は、単一のピクセルのRGB値を表しているので、私は、私はそれはしかし置く滞在する必要があるというイメージだろう、中央の3つの要素がどのように振る舞うべきかが不明です。ここで

は、これまでのところ、私の関数である。

def Switch(image_arry, cols, rows): 


for y in range(rows): 

    for x in range(0, cols): 

     r1 = image_arry[y][x*3] 
     g1 = image_arry[y][x*3+1] 
     b1 = image_arry[y][x*3+2] 

     r2 = image_arry[y][x*3 -3] 
     g2 = image_arry[y][x*3 - 2] 
     b2 = image_arry[y][x*3 - 1] 

     image_arry[y][x*3] = image_arry[y][x*3 -3] 
     image_arry[y][x*3+1] = image_arry[y][x*3 - 2] 
     image_arry[y][x*3+2] = image_arry[y][x*3 - 1] 

注:このため、大学のコースのために、私は(我々はまだこのコースでカバーされていないというのが私のプログラムの中で何を使用する許可されていない午前中のことです4ヶ月、100レベルのコースで、スコープはそれほど広範ではありません)。そして、私はbreak、while(1)のどちらかのステートメントを使うことは許されていません。ご助力ありがとうございます!

+0

[r1]行に[ – keyser

答えて

2

まず、各ピクセルをアレイの1つのエントリとして持つ必要があります。つまり、この場合のようにRGB値を3つではなく1つのオブジェクトに保存する必要があります。

あなたがクラスを使用することはできませんので、私は、各画素がタプルやリストであるお勧めします。あなたは今でのように、その行を逆にすることができ

row = [(0,0,0,), (128, 128, 128), (0, 255, 0)] 

:従って黒1つの画素、1つのグレー一の緑色有する3つの画素行は、このようになり

row.reverse() 

を、行は、現在のようになります。

row = [(0,0,0,), (128, 128, 128), (0, 255, 0)] 

反転するコードは簡単になります:

for row in image: 
    row.reverse() 
関連する問題