【发布时间】:2014-07-30 12:33:18
【问题描述】:
我正在使用 Python 2.7 和 OpenCV 2.4.9。
我需要捕获当前显示给用户的帧,并将其作为 Python 中的 cv::Mat 对象加载。
你们知道递归的快速方法吗?
我需要像下面示例中所做的那样,递归地从网络摄像头捕获 Mat 帧:
import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow('WindowName', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
cap.release()
cv2.destroyAllWindows()
break
在示例中,它使用了 VideoCapture 类来处理从网络摄像头捕获的图像。
使用 VideoCapture.read() 始终会读取新帧并将其存储到 Mat 对象中。
我可以将 “printscreens 流” 加载到 VideoCapture 对象中吗?我可以在 Python 中使用 OpenCV 创建计算机屏幕的流式传输,而无需每秒保存和删除大量 .bmp 文件吗?
我需要这些帧是 Mat 对象或 NumPy 数组,所以我可以执行一些计算机视觉具有此帧的实时例程。
【问题讨论】:
-
很难说你的问题到底是什么。您能否编辑您的问题以准确说明它是什么?例如,“递归”是什么意思?
frame已经包含图像。为什么不直接使用呢? -
@Aurelius 据我了解,他只是在寻找一种将打印屏幕作为帧而不是来自网络摄像头的图像注入的方法。由于监视器不包含在
cv2.VideoCapture获取的设备列表中,您只需从其他地方抓取打印屏幕,例如PILImage.Imagegrab.grab(),将其转换为numpy数组,然后注入在上面显示为框架的代码中...
标签: python python-2.7 opencv numpy video-capture