在wxPython中加载灰度图像
我正在用wxPython写一个小桌面应用程序,主要是处理一些图像,但发现运行得挺慢的。
现在最大的问题之一是,我使用了三种数据通道(RGB),而实际上我只需要一种——灰度图像就足够了。
目前,我是通过把图像加载到一个numpy数组中来进行处理的。处理完成后,我再把它们转换成wx图像对象(通过ImageFromBuffer()
函数),然后再加载到StaticBitmap
中显示在用户界面上。这感觉步骤有点多……
所以我有两个问题——第一个是,如何将numpy数组直接加载成灰度的wx图像?这样做可能吗?
第二个问题更为普遍——在wxPython中处理图像的最快方法是什么?我必须遍历numpy数组(因为我需要数学功能),但在这个过程中之前和之后有什么方法可以加快速度吗?
1 个回答
0
你可以用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
可以参考这个链接 链接