2014-04-06 22 views
0

我正在写一个使用wxPython的小桌面应用程序,它可以对图像进行一些操作,但是我发现它的运行速度很慢。在wxPython中加载灰度图像

目前最大的问题之一是我正在使用三个数据通道(RGB),我只需要一个 - 灰度图像对我的目的来说很好。

目前我操纵图像通过加载到一个numpy数组。一旦处理完成,他们正在转化为WX Image对象(通过ImageFromBuffer()功能,然后将其装入StaticBitmap用户界面。这似乎是很多步骤......

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

第二种更一般 - 在wxPython中处理图像的最快方法是什么?除了循环遍历numpy数组(我需要数学函数)之外,没有太多的选择,但是在这个过程之前和之后的任何加速方法都是值得欢迎的!

回答

0

yo ü可以做的乒乓与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 

参考此链接link