1

我真的不明白以下代码导致的条带化行为。我更希望看到位图的上半部分是白色的,而下半部分是黑色的。我想我可能在这里误解了一些基本的东西。感激地收到任何帮助。

import numpy
import wx

class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
    wx.Frame.__init__(self, parent, id, title, size = (135,655))

    width = 128
    height = 640
    color = (255,255,255)

    array = numpy.zeros((width,height,3),'uint8')
    array[:,:,] = color
    print array[10,10,0]
    array[0:128,0:320,0:3] = 0
    print array[10,10,0]
    image = wx.EmptyImage(width,height)
    image.SetData(array.tostring())
    self.bitmap = image.ConvertToBitmap()
    wx.EVT_PAINT(self, self.OnPaint)

    self.Centre()

def OnPaint(self, event):
    dc = wx.PaintDC(self)
    dc.DrawBitmap(self.bitmap,3,10)

class MyApp(wx.App):
    def OnInit(self):
        frame = MyFrame(None, -1, '2DS')
        frame.Show(True)
        self.SetTopWindow(frame)
        return True

app = MyApp(0)
app.MainLoop()
4

1 回答 1

1

如果你初始化你的 numpy 数组numpy.zeros((height,width,3),'uint8')并切片数组array[0:320,0:128,0:3](高度然后宽度)你应该得到你所期望的。

在您的示例中,您有 128 行,有 640 列(阵列中的基本宽度为 640,高度为 128)。因为位图是 128 宽,640 的宽度环绕在 5 条线 (640/128) 上,因此您将图像的左侧设为黑色,将右侧设为白色,但由于线条环绕,您会得到斑马纹效果。

于 2012-06-11T11:49:42.627 回答