Opencv 视频输入在第一帧停止
Posted
技术标签:
【中文标题】Opencv 视频输入在第一帧停止【英文标题】:Opencv video feed stops on the first frame 【发布时间】:2016-04-13 11:37:48 【问题描述】:我正在尝试使用 IP 网络摄像头和 opencv 通过我的 android 手机的摄像头获取视频。我正在使用 python 3.5(anaconda 发行版)和 opencv 3.1.0 这是代码:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
cap.open('http://192.168.1.4:8080/video')
while True:
ret, frame = cap.read()
cv2.imshow('RGB output', frame)
if cv2.waitKey(0):
break
cap.release()
cv2.destroyAllWindows()
问题是当我运行脚本时,我只能看到第一帧,而不是恒定的视频源。我搜索了很多,但找不到解决方案。救命!
【问题讨论】:
问题:如果你按任何键,你会打破。但是因为你有 waitKey (0) 你必须按一个键。所以换成某事。例如 if waitkey (0) == 'q' 仅在按下 q 时停止或更改为 if waitKey(10) 不等待按键但连续流式传输并且仅在按键时取消 我犯了一个多么愚蠢的错误!现在可以完美运行了,谢谢! 【参考方案1】:import cv2
import numpy as np
cap = cv2.VideoCapture(0)
cap.open('http://192.168.1.4:8080/video')
while True:
ret, frame = cap.read()
cv2.imshow('RGB output', frame)
key = cv2.waitKey(1):
if key == ('c'):
break
cap.release()
cv2.destroyAllWindows()
试试上面的代码就好了..
【讨论】:
欢迎来到 SO。请为此答案添加一些上下文并修复格式。 是的,但说明一般原则是有帮助的,在 OP 代码中,waitKey(0) 是无限等待或按一个键时等待。【参考方案2】:cap=cv2.VideoCapture(0)
while True:
success,frame=cap.read()
if(success):
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.imshow("Image",gray)
if cv2.waitKey(1) & 0xFF==ord('z'):
break
cap.release()
cv2.destroyAllWindows()
cv2.waitKey(0) 是你必须将其设置为 1 的原因 如果你想从现有按钮关闭窗口离开你的代码因为它是,但没有 0 给 CPU 时间来处理,因为它是视频。
注意,您必须添加 & 0xFF 以避免在激活 NumLock 时出现其他问题。
更多在这里 What's 0xFF for in cv2.waitKey(1)?
以上代码是最佳实践
【讨论】:
以上是关于Opencv 视频输入在第一帧停止的主要内容,如果未能解决你的问题,请参考以下文章