我正在处理
myWxImage
, 一个图像。myLabelImage
,一个 numpy 数组,具有与图像相同的形状,并且每个像素都包含一个标签(一个整数)myLookupTable
,一维 numpy 数组,即一个向量,其条目与标签一样多。(我用它将标签映射到浮点数。)
目标是遍历像素,对于每个像素,考虑其标签,查找相应的浮点数并将其与该像素的颜色相乘。
下面的代码正是这样做的,但是太慢了。您是否有一个简单的建议,如何在不求助于 C++ 或 GPU 编程的情况下更快地做到这一点,这当然在这里很有意义?
weightedImage = wx.EmptyImage(myWxImage.Width, myWxImage.Height)
rgb = numpy.zeros(3, dtype=int);
for x in range(0, myWxImage.Width):
for y in range(0, myWxImage.Height):
label = myLabelImage[x, y]
weight = myLookUpTable[label]
rgb[0] = myWxImage.GetRed(x, y)
rgb[1] = myWxImage.GetGreen(x, y)
rgb[2] = myWxImage.GetBlue(x, y)
rgb = rgb * weight
weightedImage.SetRGB(x, y, rgb[0], rgb[1], rgb[2])
myBitmap = wx.BitmapFromImage(weightedImage)
# draw myBitmap