>我有一个灰度图像转换为numpy数组。 我正在尝试在 sdl2 窗口表面上渲染此图像。
sdl2.ext.init()
self.window = sdl2.ext.Window("Hello World!", size=(W, H))
self.window.show()
self.events = sdl2.ext.get_events()
for event in self.events:
if event.type == sdl2.SDL_QUIT:
exit(0)
self.windowsurface = sdl2.SDL_GetWindowSurface(self.window.window)
self.windowArray = sdl2.ext.pixels2d(self.windowsurface.contents)
self.windowArray[:] = frame[:,:,1].swapaxes(0,1)
self.window.refresh()
现在我看到蓝色形式的图像。我想将其渲染为灰度图像。我也尝试探索 sdl2.ext.colorpalettes,但没有成功。
如何在 sdl2 窗口表面上显示灰度数字数组
我今天一直在玩这个,据我所知,原因是dtype
的差异,表面是numpy.uint32
,而从灰度图像加载的图像只有numpy.uint8
。 因此,uint8 中的全白0xff当存储为 auin32 时,它会变成蓝色0x000000ff。
我的虚拟测试方法是一些数字位移位:
self.windowArray[:] = self.windowArray[:] + (self.windowArray[:] << 8) + (self.windowArray[:] << 16)
我确信有更好的方法,但至少它确定了问题