PySDL2 在窗口表面上显示灰度数字数组



>我有一个灰度图像转换为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)

我确信有更好的方法,但至少它确定了问题

相关内容

  • 没有找到相关文章

最新更新