繁体   English   中英

访问一个numpy数组中的每个元素

[英]accessing each element in a numpy array

我正在尝试通过查看相邻像素从alpha通道蒙版中删除杂散的白色像素,但是一直无法获取TypeEror:无法调用'numpy.ndarray'对象,我使用pygame.surfarray alphachannel3d = pygame.surfarray.pixels3d(alphachannel)了一个数组: 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

根据您的评论,我将给出以下推测性答案(未经测试):

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM