Python 2.7 python cv2.VideoCapture未打开
我有一些avi文件,我正试图逐帧读取。 我使用opencv 3.1.0来读取帧:Python 2.7 python cv2.VideoCapture未打开,python-2.7,video,opencv3.1,Python 2.7,Video,Opencv3.1,我有一些avi文件,我正试图逐帧读取。 我使用opencv 3.1.0来读取帧: import cv2 cap = cv2.VideoCapture(file_path) 然后我读了cap的框架。这在一些视频中效果很好。我最近又拍了几段视频,同样的代码都是空的。我检查: cap.isOpened() # return False 而且视频似乎没有正确打开。就我而言,唯一改变的是新视频是彩色的,而旧视频不是彩色的。我不知道这将如何改变代码中的任何内容。我检查了视频是否在其他软件(imageJ)
import cv2
cap = cv2.VideoCapture(file_path)
然后我读了cap的框架。这在一些视频中效果很好。我最近又拍了几段视频,同样的代码都是空的。我检查:
cap.isOpened() # return False
而且视频似乎没有正确打开。就我而言,唯一改变的是新视频是彩色的,而旧视频不是彩色的。我不知道这将如何改变代码中的任何内容。我检查了视频是否在其他软件(imageJ)中打开良好,因此我相信视频本身不是问题所在
你知道为什么新视频不能正常打开吗?我找不到有关如何调试此问题的任何信息。如有任何建议,将不胜感激 我切换到imageio而不是opencv,一切都很好问题是你从来没有真正打开你的
cap
。我没有从视频文件中执行此操作,但使用相机时,它看起来像这样:
import cv2
#instantiate videocapture object (0 is for the default webcam)
cap = cv2.VideoCapture(0)
while(True):
#read frame from video file
ret, frame = cap.read()
cv2.imshow('frame',frame)
#if esc key pressed or no more video input
if cv2.waitKey(1) & 0xFF == 27 or ret==False:
break
# When everything done, release the capture
cv2.destroyAllWindows()
cap.release()
我也犯了同样的错误 解决方案
def VideoPlayer():
cap = cv2.VideoCapture("D:\OpenCv4Programmers\datas\TomAndJerry.mp4")
while (True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame', gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
我正在使用Windows,Python 2.7.4。我尝试了Opencv安装,但没有成功,我还安装了ffmpeg。然后我试了一下:
pip install opencv-python
这对我来说很有效。经过一段时间的测试并失败了。。。有两件事需要做 必须安装ffmpeg,您可以检查它是否已安装并使用opencv进行以下操作:
print(cv2.getBuildInformation())
显然,有一个环境变量OPENCV_FFMPEG_CAPTURE_OPTIONS在某些情况下可能无法设置。。。。所以一定要这样
import os
os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transport;udp"
使用Android的RSTP和Raspberry Pi的cvlc进行测试和工作我的代码(使用openCV)与你的代码相同。问题是盖子没有正确打开。在您的示例中,ret返回False。如果您使用的是windows,那么您可以尝试
r“file\u path”
,如果路径中的任何地方都有\u
,则它将被视为unicode转义。在开头添加“r”是针对原始文本的。