在wxPython中加载灰度图像

1 投票
1 回答
716 浏览
提问于 2025-04-18 01:36

我正在用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 

可以参考这个链接 链接

撰写回答