我正在使用wxPython编写一个小桌面应用程序,它可以进行一些图像操作,但我发现它的运行速度相当慢。
目前最大的问题之一是我使用三个数据通道(RGB),我只需要一个 - 灰度图像可以用于我的目的。
目前我正在通过将图像加载到numpy数组中来操作图像。处理完成后,它们将被转换为wx Image对象(通过ImageFromBuffer()
函数,然后将其加载到用户界面的StaticBitmap
。这看起来像很多步骤..
所以我有两个问题 - 第一个是如何将numpy数组直接加载到灰度wx图像中?这甚至可能吗?
第二个更通用 - 在wxPython中处理图像的最快方法是什么?我没有太多选择,只能循环使用numpy数组(我需要数学功能),但是欢迎任何在此过程之前和之后加快速度的方法!
答案 0 :(得分:0)
你可以用这样的OIL打乒乓球:)
def convertToGrayscale(img):
import Image, ImageOps
orig = Image.new("RGB", img.GetSize())
orig.fromstring(img.GetData())
pil = ImageOps.grayscale(pil)
ret = wx.EmptyImage(pil.size[0], pil.size[1])
ret.SetData(pil.convert('RGB').tostring())
return ret
请参阅此链接link