Qt读取视频图片失败,出现错误:
Unable to stop the stream: Inappropriate ioctl for device
这是由于ffempeg文件没装好,在opencv文件中的build里打开终端,输入
rm -rf * //把原来的库先删掉,下面再编译一遍
(1) Build ffmpeg
下载ffmpeg安装包 http://ffmpeg.org/releases/ffmpeg-2.7.1.tar.bz2
在安装包目录下打开终端,输入
tar -xvf ffmpeg-2.7.1.tar.bz2
cd ffmpeg-2.7.1
./configure --enable-pic --extra-ldexeflags=-pie
如果出现 yasm/nasm not found or too old. 报错,重新输入
./configure --enable-pic --extra-ldexeflags=-pie --disable-yasm for a crippled build.
sudo apt-get install yasm
如果没有那就下面:
make -j4
sudo make install
(2) Build Opencv
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_QT=OFF -D WITH_V4L=ON -D CMAKE_SHARED_LINKER_FLAGS=-Wl,-Bsymbolic ..
make -j4
如果出现版本不匹配报错
在/opencv/opencv-3.2.0/modules/videoio/src/cap_ffmpeg_impl.hpp 里最顶端添加:
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020
然后再
make -j4
sudo make install
sudo make
sudo make install
重启Qt就可以了
原文连接:Ubuntu+Qt+Opencv3.4.0读取视频图片失败,出现错误:Unable to stop the stream: Inappropriate ioctl for device
版权声明:本文为weixin_43793181原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
我是为了解决debian中使用opencv读取视频进行目标检测时也出现Unable to stop the stream: Inappropriate ioctl for device的问题参考的这篇文章,原文十分的有用,我在此转载以方便自己记录,感谢原文博主!
另一方面,我在重新编译opencv3.3.1的时候还遇到了
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:56: modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:21149: modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
make: *** [Makefile:138: all] Error 2
这个问题
解决办法是:
找到cv2.cpp那个文件
翻到885行(可能每个人的不一样,就在这附近)
前面要加上个(char *)。
然后再编译,在这个地方停很长时间就可以通过了。
参考的原文连接:树莓派安装opencv报错:make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:56…
在此感谢各位分享经验的博主!