0

タイトルが示すように、別のピクセルの最後のピクセルでピクセルの色を変更できるようにしたいと考えています。たとえば、下の画像では、黒のピクセルをオレンジ色のピクセルに置き換えることができるようにしたいと考えていますが、コードをより複雑なものに適用することを計画しているため、ピクセル == 黒、ピクセル = オレンジの場合は機能しません。画像。以下のコードは私の最初の試みです:

 for y in xrange(image_test.size[1]):
    for x in xrange(image_test.size[0]):
        currentPixel_2 = image_test.getpixel((x,y))
        if currentPixel_2 == (0,0,0):
            currentPixel_2 =

ここに画像の説明を入力

4

1 に答える 1

0

これを行うには、変数を使用して、遭遇した前のピクセルの値を保持します。

previous_pixel = None
for y in xrange(image_test.size[1]):
    for x in xrange(image_test.size[0]):
        currentPixel_2 = image_test.getpixel((x,y))
        if currentPixel_2 == (0,0,0) and previous_pixel:
            image_test.putpixel((x,y), previous_pixel)
        else:
            previous_pixel = currentPixel_2

ほとんどの行はここで明らかなはずですが、基本的に、黒のピクセルを使用していない場合、ループで最後に行うことは、現在のピクセルを に割り当てることですprevious_pixel。したがって、黒の場合は次のループを通過します、前のピクセル値を使用する準備が整いました。

if currentPixel_2 == (0,0,0) and previous_pixelは、最初のピクセルが黒で、previous_pixelまだ値がない場合に備えてあります。スキップしますが、必要なことはできます。previous_pixelこの最初のピクセルの問題に対する別のアプローチは、ループを開始する前に何らかの値を割り当てることです。

また、ところで、ここでは個々のピクセルを繰り返し処理しているため、かなり遅くなります。高速化する必要がある場合は、numpy を使用して実行できます。

于 2013-10-13T04:03:18.810 に答える