2

私は現在、.ppmファイルをメインにロードし、ユーザーが表示された画像ファイルを操作できる一連の機能を実行できるようにする学校向けのプログラムを作成しています(これは別の機能を介して行われます)。方法。このファイルを操作できるようにするために必要な方法の 1 つは、水平軸を横切って「反転」することです。したがって、各行の要素を「反対」の位置に移動する関数が必要です。たとえば、配列が [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、1、0]。

注: 3 つの要素ごとに 1 つのピクセルの 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) ステートメントも使用できません。ご助力ありがとうございます!

4

1 に答える 1

2

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

クラスを使用できないため、各ピクセルをタプルまたはリストにすることをお勧めします。したがって、1 つの黒のピクセル、1 つのグレー、および 1 つの緑の 3 つのピクセルの行は、次のようになります。

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

次のようにその行を逆にすることができます。

row.reverse()

行は次のようになります。

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

反転するコードは単純です。

for row in image:
    row.reverse()
于 2012-04-26T10:56:47.840 に答える