gpt4 book ai didi

python - OpenCV VideoCapture 表示视频有 0 帧(C++ 和 Python)

转载 作者:太空狗 更新时间:2023-10-29 22:57:56 25 4
gpt4 key购买 nike

我正在使用 OpenCV 2.4.9 并尝试打开视频。 isOpened() 成功运行,但是当我尝试查看视频的帧数时,它返回 0,我无法访问视频的帧数。我拥有的每个视频都会发生这种情况。我可以在不同的机器上使用相同的视频(问题发生在我的 CentOS 7 VM 中,视频位于共享文件夹中,主机操作系统可以在 OpenCV 中正常访问它们)。安装了 Ffmpeg,我可以 ffplay 视频,ffmpeg -i 告诉我视频的帧数不为零。我的 OpenCV 使用 ffmpeg 编译成功:

"  Video I/O:\n"
" DC1394 1.x: NO\n"
" DC1394 2.x: YES (ver 2.2.2)\n"
" FFMPEG: YES\n"
" 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: YES\n"
" GStreamer: \n"
" base: YES (ver 0.10.36)\n"
" app: YES (ver 0.10.36)\n"
" video: YES (ver 0.10.36)\n"
" OpenNI: NO\n"
" OpenNI PrimeSensor Modules: NO\n"
" PvAPI: NO\n"
" GigEVisionSDK: NO\n"
" UniCap: NO\n"
" UniCap ucil: NO\n"
" V4L/V4L2: Using libv4l (ver 0.9.5)\n"
" XIMEA: NO\n"
" Xine: NO\n"
"\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。

最佳答案

这看起来类似于我遇到的编解码器问题,并描述了 in this stack overflow post .简而言之:我使用 ffmpeg 来转换视频:

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

关于python - OpenCV VideoCapture 表示视频有 0 帧(C++ 和 Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42259556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com