Я использую новый пакет PySDL2, пытаясь связать его с моим существующим кодом OpenCV. Я хочу взять изображение, захваченное с веб-камеры через интерфейс pvt cv2, в OpenCV и использовать PySDL2, чтобы показать его в окне на экране. Я думаю, что я понял, как правильно преобразовать формат изображения cv2 в поверхность PySDL2, но в конце кода ниже все, что я получаю, является черным окном. Любые указатели на то, где я пошатнулся, были бы очень благодарны!Преобразование изображений cv2 в поверхности PySDL2 для blitting на экран
#grab a frame from a webcam
import cv2
vc = cv2.VideoCapture(0)
junk,image = vc.read()
#convert image to sdl format (?)
import sdl2
sbuf = image.tostring()
simage = sdl2.SDL_CreateRGBSurfaceFrom(sbuf,image.shape[0],image.shape[1],24,3*image.shape[0],sdl2.SDL_PIXELFORMAT_BGRA8888,0xff0000, 0x00ff00, 0x0000ff, 0)
#create a window
sdl2.SDL_Init(sdl2.SDL_INIT_VIDEO)
windowSize = (640,480)
window = sdl2.SDL_CreateWindow(b"Hello World",sdl2.SDL_WINDOWPOS_CENTERED, sdl2.SDL_WINDOWPOS_CENTERED,windowSize[0], windowSize[1], sdl2.SDL_WINDOW_SHOWN)
windowSurface = sdl2.SDL_GetWindowSurface(window)
#try to blit the sdl-formatted image to the window
sdl2.SDL_BlitSurface(simage,None,windowSurface,None)
sdl2.SDL_UpdateWindowSurface(window)
sdl2.SDL_FreeSurface(simage)
# pump events to get the window to show and update
while True:
sdl2.SDL_PumpEvents()