2

私は Raspberry Pi (Running Rasbian Wheezy) を使用してアート プロジェクトに取り組んでいます。変更された画像の領域のみが置き換えられるタイムラプスを作成しています。

アルファ チャネルを使用して 2 つの異なる配列のピクセルから PixelArray を作成し、どちらのピクセルを使用するかを決定すると、プロセッサが限界に達し、実行が非常に遅くなります。

  alphachannelarray = basearray.compare(imgarray, distance=0.08, weights=(0.01, 0.01, 0.01))

  alphachannel = alphachannelarray.make_surface()    

  for col in range (0, 800):
    for cell in range (0, 600):
      if alphachannelarray[col, cell] == alphachannel.map_rgb ((0,0,0)):
            imgarray[col, cell] = imgoldarray[col,cell] #if alpha channel is black use imgold pixel


      elif alphachannelarray[col, cell] == alphachannel.map_rgb ((255,255,255)):
            imgarray[col, cell] = imgarray[col][cell] #il alpha channel is white use img pixel

forループよりも速く画像内のすべてのピクセルにアクセスするpygameの方法はありますか?

ありがとう!-トミー

4

2 に答える 2

0

ピクセルをループして、一致しないピクセルのみを変更するだけで、透明なピクセルを他のピクセルの上に再描画し続ける必要はありません。

于 2012-12-06T20:47:34.577 に答える
0

完全な答えはわかりませんが、いくつかのアイデア/メモ:

  1. アルファブリッティングで何をしているのか正確にはわかりません。アルファが必要ない場合は、画像のサブレクトをブリットした方がよい場合があります。「差分」である外部画像を保存していると思いますが、他のピクセルは透明のままですか?

  2. タプルの代わりに PixelArray にアクセスするためのスライス表記を試してください。imgarray[x:y] = (255,255,0)vs imgarray[x, y] = (255, 255, 0)numpy 配列の使用を妨げている場合。その他の例: http://www.pygame.org/docs/ref/pixelarray.html#pygame.PixelArray

  3. PixelArray.compare (ドキュメント)はしきい値を使用します。しきい値の比較を探していない可能性があります。

于 2012-10-31T01:08:45.817 に答える