我正在使用新的PySDL2包,试图将其与我现有的OpenCV代码进行接口。我想通过cv2python接口到OpenCV从网络摄像头捕捉到的图像,并使用PySDL2在屏幕上的窗口中显示它。我想我已经知道如何正确地将cv2图像格式转换为PySDL2曲面,但在下面代码的末尾,我得到的只是一个黑色窗口。任何关于我哪里出错的建议都将不胜感激!在
#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()
这句话可以帮助您:
windowArray[:,:,0:3]=图像交换(0,1)
我没有足够的声誉来发表评论,尽管那是很久以前的事了, 希望这能帮助别人
可以为窗口创建添加标志
window = sdl2.ext.Window("test", size=windowSize, flag=sdl2.SDL_WINDOW_SHOWN)
解决了!在
我不知道为什么使用
cv2.imshow
显示相机的第一帧是必要的,但是没有这个部分,sdl2窗口永远不会出现。在相关问题 更多 >
编程相关推荐