Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 python cv2.VideoCapture未打开_Python 2.7_Video_Opencv3.1 - Fatal编程技术网

Python 2.7 python cv2.VideoCapture未打开

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)

我有一些avi文件,我正试图逐帧读取。 我使用opencv 3.1.0来读取帧:

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() 

我也犯了同样的错误

解决方案

  • 施展魅力
  • 安装巨蟒3
  • conda安装-c conda forge opencv(以管理员身份打开CMD)
  • 在PyCharm中选择Anaconda3(文件->设置->项目解释器)
  • 和测试

    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”是针对原始文本的。