0

隣接するピクセルを調べて、アルファ チャネル マスクから浮遊する白いピクセルを削除しようとしていますが、TypeEror: 'numpy.ndarray' object is not callable を取得しています。pygame.surfarray を使用して配列を作成しました alphachannel3d = pygame.surfarray.pixels3d(alphachannel) 。ピクセル値を白から黒に変更します。 if (alphachannel3d[x] == (0, 0, 0)) & (alphachannel3d[x + 3] == (255, 255, 255)) & (alphachannel3d[x -3]==(255, 255, 255)): alphachannel3d[x] = (255, 255, 255)

ループは次のとおりです。

x=1

while 1:

  count = x
  print 'count is', count

  print 'waiting 5 seconds'
  pygame.time.wait(5000)


  img = cam.get_image()

  imgarray = pygame.PixelArray(img)

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

  alphachannel = alphachannelarray.make_surface()

  alphachannel3d = pygame.surfarray.pixels3d(alphachannel)


  if (alphachannel3d[x] == (0, 0, 0)) & (alphachannel3d[x + 3] == (255, 255, 255)) & (alphachannel3d[x -3]==(255, 255, 255)):
    alphachannel3d[x] = (255, 255, 255)

  alphachannel = pygame.surfarray.make_surface(alphachannel3d)
  srfcScreen.blit(alphachannel, (0,0))
  print 'screen blitted'

  pygame.display.flip()
  print 'display flipped'

  x = x+1
4

1 に答える 1

0

あなたのコメントに基づいて、私は次の推測的な答えを与えるつもりです(それをテストせずに):

if np.all(alphachannel3d[x] == (0, 0, 0)) & np.all(alphachannel3d[x + 3] == (255, 255, 255)) & np.all(alphachannel3d[x -3]==(255, 255, 255)):
    alphachannel3d[x] = (255, 255, 255)
于 2012-11-06T13:13:40.883 に答える