Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测python/pygame中图像之间的差异_Python_Image Processing_Pygame_Raspberry Pi - Fatal编程技术网

检测python/pygame中图像之间的差异

检测python/pygame中图像之间的差异,python,image-processing,pygame,raspberry-pi,Python,Image Processing,Pygame,Raspberry Pi,我正在用树莓皮做一个艺术项目。我正在制作一个仅替换图像中已更改区域的时间点 当使用alpha通道从两个不同阵列的像素创建PixelArray以确定使用哪个像素时,处理器会达到最大值并运行非常缓慢: alphachannelarray = basearray.compare(imgarray, distance=0.08, weights=(0.01, 0.01, 0.01)) alphachannel = alphachannelarray.make_surface()

我正在用树莓皮做一个艺术项目。我正在制作一个仅替换图像中已更改区域的时间点

当使用alpha通道从两个不同阵列的像素创建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
pygame中有没有一种方法可以比for循环更快地访问图像中的所有像素

谢谢!
-汤米

我不知道完整答案,但有几个想法/注意事项:

  • 我不确定你到底在做什么。如果您不需要alpha,那么最好对图像的子矩形进行点显。我想你是在保存一个“差异”的外部图像,让其他像素保持透明

  • 尝试使用切片表示法来访问像素数组而不是元组
    imgarray[x:y]=(255255,0)
    vs
    imgarray[x,y]=(255,255,0)
    防止使用numpy数组。更多示例:

  • 使用阈值。您可能正在寻找无阈值比较


  • 你只需在像素之间循环,只改变那些不匹配的像素,你不必在其他像素上重画透明像素。

    如果你a)一次只问一个问题,你可能会得到更好的回答,b)发布显示问题所需的最少代码量,c)描述您已经完成的任何调试和故障排除hi,欢迎使用SO。你可以考虑把问题分解成2个单独的问题(性能和缺乏更新)。此外,如果你对你的期望更具体,你会增加获得帮助的机会。谢谢你的快速回复!我应该编辑我的原始问题还是发布新问题?是其中一种不好的礼节吗?编辑你的问题是最好的方式。我会对这篇文章进行编辑,以关注缺乏更新的问题,然后当你有一些真正有效的东西时,如果你仍然存在性能问题,你可以发布一个新的问题谢谢,猴子!在1.中你是正确的,我正在尝试使某些像素透明(与早期图像不匹配的像素)。切片表示法在PixelArray中不太容易使用,访问每个像素需要相当多的处理。我将进一步研究无阈值比较。再次感谢!我发现使用surfarray和访问numpy.putmask的速度非常快!numpy.putmask(img3d,alphachannel3d=[0,0,0],imgold3d)谢谢!