OPENCV VIDEOCAPTURE说视频有0帧(C 和Python)

OpenCV VideoCapture says video has 0 frames (C++ and Python)

本文关键字:Python 0帧 VIDEOCAPTURE 视频 OPENCV      更新时间:2023-10-16

我正在使用opencv 2.4.9并尝试打开视频。isOpened()成功运行,但是当我尝试查看视频的帧数时,它将返回0,并且无法访问视频的帧。我拥有的每个视频都会发生这种情况。我可以在另一台机器上使用相同的视频(问题发生在我的Centos 7 VM中,视频在共享文件夹中,主机OS可以在OpenCV中访问它们)。安装了FFMPEG,我可以ffplay视频,ffmpeg -i告诉我视频的帧数非零。我的OPENCV成功地与FFMPEG一起编译:

"  Video I/O:n"
"    DC1394 1.x:                  NOn"
"    DC1394 2.x:                  YES (ver 2.2.2)n"
"    FFMPEG:                      YESn"
"      codec:                     YES (ver 56.26.100)n"
"      format:                    YES (ver 56.25.101)n"
"      util:                      YES (ver 54.20.100)n"
"      swscale:                   YES (ver 3.1.101)n"
"      gentoo-style:              YESn"
"    GStreamer:                   n"
"      base:                      YES (ver 0.10.36)n"
"      app:                       YES (ver 0.10.36)n"
"      video:                     YES (ver 0.10.36)n"
"    OpenNI:                      NOn"
"    OpenNI PrimeSensor Modules:  NOn"
"    PvAPI:                       NOn"
"    GigEVisionSDK:               NOn"
"    UniCap:                      NOn"
"    UniCap ucil:                 NOn"
"    V4L/V4L2:                    Using libv4l (ver 0.9.5)n"
"    XIMEA:                       NOn"
"    Xine:                        NOn"
"n"

我的代码正确编译,我可以使用OpenCV读取图像。

代码非常基本。对于Python:

import cv2
cap = cv2.VideoCapture('test.mp4')
print cap.isOpened()
print cap.get(cv2.cv.CV_CAP_PROP_FPS)
print cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
>> True
>> 0.0
>> 0

和C :

#include "opencv2/opencv.hpp"
#include <stdio.h>
#include <stdlib.h>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
    cv::VideoCapture cap;
    cap.open("test.mp4");
    if(cap.isOpened())
    {
        cout >> cap.get(CV_CAP_PROP_FPS) >> endl;
        cout >> cap.get(CV_CAP_PROP_FRAME_COUNT) >> endl;
    }
    return(0);
}

也打印0。

这看起来与我遇到的编解码器问题相似,并在此堆栈溢出文章中进行了描述。简而言之:我使用ffmpeg转换视频:

ffmpeg -i input.avi -c:v libx264 -vf format=yuv420p output.mp4