我正在使用Python的CV2(OpenCV)和Pyglet Python库创建一个小应用程序,它将显示来自网络摄像机的实时视频,并具有一些文本或静态图像叠加。我已经使用CV2制作了一个应用程序,它只在框架中显示网络摄像机图像,但现在我想在pyglet窗口中获取该框架。
以下是我目前拼凑出来的内容:
以下是我目前拼凑出来的内容:
import pyglet
from pyglet.window import key
import cv2
import numpy
window = pyglet.window.Window()
camera=cv2.VideoCapture(0)
def getCamFrame(color,camera):
retval,frame=camera.read()
if not color:
frame=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
frame=numpy.rot90(frame)
return frame
frame=getCamFrame(True,camera)
video = pyglet.resource.media(frame, streaming=True)
@window.event
def on_key_press(symbol, modifiers):
if symbol == key.ESCAPE:
print 'Application Exited with Key Press'
window.close()
@window.event
def on_draw():
window.clear()
video.blit(10,10)
pyglet.app.run()
运行时,我遇到了以下错误:
Traceback, line 20 in <module>
video = pyglet.resource.media(frame, streaming=True)
TypeError: unhashable type: 'numpy.ndarray'
我也乐意尝试其他方案来让文字显示在我的实时视频上。我最初使用的是pygame,但最终需要支持多个监视器,所以我正在使用pyglet。