在wxPython中加载灰度图像

在wxPython中加载灰度图像,python,image,wxpython,Python,Image,Wxpython,我正在用wxPython编写一个小的桌面应用程序,它可以进行一些图像处理,但我发现它运行得相当慢 目前最大的问题之一是,我使用的是三个通道的RGB数据,我只需要一个通道,灰度图像就可以满足我的需要 目前,我正在通过将图像加载到numpy数组来处理它们。处理完成后,通过ImageFromBuffer函数将它们转换为wx图像对象,然后将其加载到用户界面的静态位图中。这似乎需要很多步骤 所以我有两个问题-第一个问题是如何将numpy数组直接加载到灰度wx图像中?这可能吗 第二个更一般——在wxPyth

我正在用wxPython编写一个小的桌面应用程序,它可以进行一些图像处理,但我发现它运行得相当慢

目前最大的问题之一是,我使用的是三个通道的RGB数据,我只需要一个通道,灰度图像就可以满足我的需要

目前,我正在通过将图像加载到numpy数组来处理它们。处理完成后,通过ImageFromBuffer函数将它们转换为wx图像对象,然后将其加载到用户界面的静态位图中。这似乎需要很多步骤

所以我有两个问题-第一个问题是如何将numpy数组直接加载到灰度wx图像中?这可能吗


第二个更一般——在wxPython中处理图像的最快方法是什么?我没有太多的选择,只能在numpy数组上循环,我需要数学功能,但是在这个过程前后任何加速的方法都是受欢迎的

你可以用PIL打乒乓球,如下所示:

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 
请参阅此链接