opencv 无法停止流:设备的 ioctl 不合适

新手上路,请多包涵

我只想将视频转换为帧图像。

使用这个简单的代码

import cv2
vidcap = cv2.VideoCapture('gog.mp4')
success,image = vidcap.read()
count = 0
success = True
while success:
  success,image = vidcap.read()
  print 'Read a new frame: ', success
  cv2.imwrite("frame%d.jpg" % count, image)
  count += 1

输出是

无法停止流:设备的 ioctl 不合适

我在 ubuntu 服务器上使用 python 2.7.6。

原文由 Gor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 762
1 个回答

我已经在 Ubuntu 16.04.3 上解决了这个问题。

  1. sudo apt-get install ffmpeg

  2. sudo apt-get install libavcodec-dev libavformat-dev libavdevice-dev

  3. 使用以下命令重建 OpenCV 3.3.0:

    • cd build
    • cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_FFMPEG=ON -D WITH_TBB=ON -D WITH_GTK=ON -D WITH_V4L=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=ON -DWITH_QT=OFF -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
    • make -j7
    • sudo make install

原文由 Stackoverflow 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题