【发布时间】:2015-09-10 20:36:48
【问题描述】:
我正在使用 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。
【问题讨论】:
标签: python opencv video numpy pyglet