gpt4 book ai didi

c++ - 使用 OpenCV 逐帧读取视频文件

转载 作者:行者123 更新时间:2023-11-28 05:01:43 24 4
gpt4 key购买 nike

我写了这些代码:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>

using namespace std;

int main()
{
cv::namedWindow( "Example 2-3", cv::WINDOW_AUTOSIZE );
cv::VideoCapture cap;
cap.open("/Testing/test.avi");
if(cap.isOpened()==0)
{
cout<<"The video file cannot be opened."<<endl;
return -1;
}
cv::Mat frame;
cap >> frame;
std::cout<<frame.empty()<<std::endl; // I have a problem here: Why the result is 1?
for(;;)
{
cap >> frame;
if( frame.empty() ) break; // Ran out of film
cv::imshow( "Example 2-3", frame );
if( (char)cv::waitKey(33) >= 0 ) break;
}
return 0;
}

当我通过 cap.open 打开视频时,我试图逐帧显示视频。 ,它是成功打开的,但是当程序执行代码std::cout<<frame.empty()<<std::endl; ,应该是0,因为视频打开成功,所以frame不应该是空的,但是结果是1,表示frame是空的,所以视频不能显示,为什么?你有什么解决办法吗?

最佳答案

在这种情况下,据我所知,您应该检查您的视频文件。另外,尝试调试以查看打开文件后 cap 包含的内容,例如帧数或 fps 等。

成功打开您的视频文件并不意味着您的文件是好的。有时您的视频文件损坏(下载时或解码时等)会导致某些帧可能为空。

尝试另一个视频文件,看看是否得到不同的结果。

关于c++ - 使用 OpenCV 逐帧读取视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45769615/

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