VideoCapture 在 OpenCV 2.4.2 中不起作用

Posted

技术标签:

【中文标题】VideoCapture 在 OpenCV 2.4.2 中不起作用【英文标题】:VideoCapture is not working in OpenCV 2.4.2 【发布时间】:2012-07-11 19:05:30 【问题描述】:

我最近在 Ubuntu 12.04 中安装了 OpenCV 2.4.2。

cap = VideoCapture(0)

正在工作。但我无法从某些视频源中抓取帧。

cap = VideoCapture("input.avi")
img = cap.read() 

给我一​​个全零元素的 numpy。

我还安装了ffmpeg 0.11,x264的最新快照,v4l-0.8.8(都是最新的稳定版本)

cmake -D WITH_QT=ON -D WITH_FFMPEG=ON -D WITH_OPENGL=ON -D WITH_TBB=ON -D BUILD_EXAMPLES=OFF WITH_V4L=ON .. 
make
sudo make install

当我做 cmake 时,我得到了这个

-- 检测到的 GNU GCC 版本:46 (406) -- 找到 OpenEXR:/usr/lib/libIlmImf.so -- 寻找 linux/videodev.h -- 正在寻找 linux/videodev.h - 未找到 -- 寻找 linux/videodev2.h -- 寻找 linux/videodev2.h - 找到 -- 寻找 libavformat/avformat.h -- 寻找 libavformat/avformat.h - 找到 -- 寻找 ffmpeg/avformat.h -- 正在寻找 ffmpeg/avformat.h - 未找到 -- 检查模块“tbb” -- 未找到包 'tbb'

--   Video I/O:  
--     DC1394 1.x:                  NO  
--     DC1394 2.x:                  YES (ver 2.2.0)  
--     FFMPEG:                      YES  
--       codec:                     YES (ver 54.23.100)  
--       format:                    YES (ver 54.6.100)  
--       util:                      YES (ver 51.54.100)  
--       swscale:                   YES (ver 2.1.100)  
--       gentoo-style:              YES  
--     GStreamer:                   
--       base:                      YES (ver 0.10.36)  
--       app:                       YES (ver 0.10.36)  
--       video:                     YES (ver 0.10.36)  
--     OpenNI:                      NO  
--     OpenNI PrimeSensor Modules:  NO  
--     PvAPI:                       NO  
--     UniCap:                      NO  
--     UniCap ucil:                 NO  
--     V4L/V4L2:                    Using libv4l (ver 0.8.8)  
--     XIMEA:                       NO  
--     Xine:                        NO

我在寻找 videodev.h 等

/usr/include/linux/videodev2.h 存在 /usr/include/libavformat/avformat.h 存在 /usr/local/include/libavformat/avformat.h 存在

但我找不到ffmpeg/avformat.h

这里有什么问题?

【问题讨论】:

我的videoCapture也有问题,尝试打开视频时崩溃... 【参考方案1】:

所以,我意识到 ffmpeg 存在一些问题。我重建并安装了ffmpeg,然后更改了cmake的标志以制作opencv。

对于 ffmpeg,

 ./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab 
make 
sudo make install

对于 OpenCV,

cmake -D CMAKE_BUILD_TYPE=RELEASE ..
make
sudo make install

这是安装 OpenCV 2.4.2 https://github.com/jayrambhia/Install-OpenCV/blob/master/Ubuntu/2.4/opencv2_4_2.sh的完整脚本

这是我关于 OpenCV 2.4.2 安装的详细博文http://jayrambhia.com/blog/install-opencv-2-4-in-ubuntu-12-04-precise-pangolin/

【讨论】:

我只是不明白他们怎么能把它弄得这么复杂,这应该是默认的 如果我通过 apt-get 安装所有东西会怎样?你认为我可以让它运行吗? 我想这可能是一些许可证问题,必须通过这种方式进行。【参考方案2】:

要运行 OpenCV 的完整安装,请尝试以下操作:

sudo apt-get install libopencv-dev python-opencv

更多详情请查看以下链接http://milq.github.io/install-opencv-ubuntu-debian/

【讨论】:

以上是关于VideoCapture 在 OpenCV 2.4.2 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 上的 OpenCV 中旋转 VideoCapture

VideoCapture 在 OpenCV 2.4.2 中不起作用

opencv视频操作基础---VideoCapture类

从 OpenCV 3 中的 VideoCapture 获取垫子

无法使用 VideoCapture 在 OpenCV+Python 中读取或播放视频

OpenCV3 VideoCapture buffer