【问题标题】:Read after Videocapture on opencv always returns false在 opencv 上的 Videocapture 之后读取总是返回 false
【发布时间】:2018-03-16 00:49:21
【问题描述】:

我不知道是什么问题。

我正在使用

  • Ubuntu 17.04
  • Python 2.7.13
  • OpenCV 版本:3.3.0

我已经解决了互联网上的所有相关问题,但还没有找到问题的解决方案。 'v.mp4' 文件位于我的 python 文件所在的同一目录中。

代码

import cv2
vidcap = cv2.VideoCapture('v.mp4')
success,image = vidcap.read()
count = 0; 
print success
while success:
    success,image = vidcap.read()
    cv2.imwrite("frame%d.jpg" % count, image)     # save frame as JPEG file
    if cv2.waitKey(10) == 27:                     # exit if Escape is hit
        break
    count += 1

【问题讨论】:

  • 您可以尝试将文件更改为while vidcap.isOpened() 吗?你能确保文件正在被读取吗?也尝试在写入之前先使用cv2.imshow() 显示框架?
  • 你是如何安装 OpenCV 的?
  • @SamerTufail 我已经尝试过while vidcap.isOpened(),但它从未进入while 循环。我不确定我的代码是否能够首先读取文件。由于成功值始终保持为 false,因此现在没有必要执行 cv2.imshow()。
  • @AlexanderReynolds 我已经使用$pip install opencv-python安装了opencv

标签: python-2.7 opencv image-processing video-capture video-processing


【解决方案1】:

opencv-python 包在 Windows 之外没有 VideoCapture() 支持。请参阅my answer herePyPI opencv-python documentation,其中指出:

重要提示

MacOS 和 Linux 软件包不支持视频相关功能(未使用 FFmpeg 编译)。

【讨论】:

  • 那么,如果我不想要你在其他答案中解释的这些类型的问题,我应该从源代码编译 OpenCV 吗?
  • @arjungupta 是的!如果你不熟悉从源代码编译东西,可能会有点头疼,但经过几次尝试你就会适应它:)。如果这回答了您的问题,您能否将其选为已接受?谢谢!
  • 感谢您的建议,这真的很有帮助。我找到了如何从 https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ 的源代码编译 open cv,但那是 Ubuntu 16.04 支持的教程,所以我将我的操作系统从 Ubuntu 17.04 降级到 Ubuntu 16.04,因为许多库对于 Ubuntu 17.04 来说是非常必要的我的项目。
【解决方案2】:

对我来说,我使用 pycharm 作为我的 ide。每个 isopened() 和 read() 都显示为假。我所要做的就是将pycharm使用的python版本更改为python 2。

【讨论】:

    猜你喜欢
    • 2018-10-11
    • 2017-08-27
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多