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

Gor*_*Gor 14 python video opencv frame

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

使用这个简单的代码

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
Run Code Online (Sandbox Code Playgroud)

输出是

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

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

小智 8

我在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


小智 2

您好,我也遇到了这个错误并用这个命令解决了。

sudo apt-get install libv4l-dev
cmake -DWITH_LIBV4L=ON .. (this is important)
make && sudo make install
Run Code Online (Sandbox Code Playgroud)

如果第二个cmake命令出现错误,请安装cmake gui。执行第一个命令:sudo apt-get install libv4l-dev通过cmakegui程序,您可以使用CmakeVars.txt文件设置参数。编辑 CmakeVars.txt 文件将WITH_LIBV4L=OFF 更改为WITH_LIBV4L=ON 并运行make && sudo make install命令。有关此错误的更多信息,请访问:https ://github.com/opencv/opencv/issues/6157