gpt4 book ai didi

c++ - OpenCV - 来自手机摄像头的 FPS 不正确

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:54:36 25 4
gpt4 key购买 nike

我有多个录制的视频样本,当我通过我的程序运行这些样本时,它会返回 FPS 等。它对于我所有的视频样本都足够准确(见下表),但是当我运行通过我的智能手机拍摄的视频样本时,它以 90000 的速度返回 FPS,通过我的智能手机拍摄的每个视频都会发生这种情况,所以它不仅仅是一个单个视频文件的问题。

File              Actual FPS          OpenCV FPS          ffmpeg FPS

action-60fps         60                   59                  60


action-24fps 24 24 24


phone_panning 29 90000 29

是什么导致了这个问题?

编辑:设法忘记添加我的代码...

  VideoCapture capture(argv[1]);
Mat frame;
if(capture.isOpened()) {
int fps = capture.get(CV_CAP_PROP_FPS);
int width = capture.get(CV_CAP_PROP_FRAME_WIDTH);
int height = capture.get(CV_CAP_PROP_FRAME_HEIGHT);
cout << "FPS: " << fps << ", width: " << width << ", height: " << height << endl;
VideoWriter writer("output.mpg",
CV_FOURCC('P','I','M','1'), fps, cvSize(width, height), 0); // 0 means gray, 1 means color
if(writer.isOpened()) {
while(true) {
capture >> frame;
if(!frame.empty()) {
imshow("Video", frame);
}
Mat frame_gray = frame.clone();
cvtColor(frame, frame_gray, CV_RGB2GRAY);
writer << frame_gray;
int key = waitKey(25);
if((char)key == 'q') {
break;
}
}
}
}

最佳答案

我在计算视频中的 FPS 和帧数时遇到了与 opencv 相同的问题。 (对于 64 秒视频,它返回 90,000 FPS 和 5,758,245 帧数!!)根据这个答案: OpenCV captures only a fraction of the frames from a video file这是一个 opencv 问题,他们正在解决。

另一个原因可能是文件头的问题,我的是转换视频格式造成的。我通过使用原始视频格式 mp4 而不是 avi 解决了这个问题。

关于c++ - OpenCV - 来自手机摄像头的 FPS 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21851580/

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