OpenCV - 来自手机摄像头的 FPS 不正确
OpenCV - FPS from phone camera not correct
>我有多个录制的视频样本,当我通过我的程序运行这些样本时,它会返回 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仅捕获视频文件中的一小部分帧这是一个OpenCV问题,他们正在努力解决。
另一个原因可能是文件头的问题,我的是由转换视频格式引起的。我通过使用原始视频格式mp4而不是avi解决了它。
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 如果语句逻辑不正确
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- 不正确的操作数类型 MSVC
- 数组填充了不正确的值
- 我是否不正确地集中了这些字符数组?
- 为什么除非我使用 cout,否则我的值不正确?
- 计算幂级数的数学结果不正确
- 为什么 sizeof 在 C++ 中给出不正确的字节数?
- atoi() 在应用于大型命令行参数时会产生不正确的值
- OpenCV - 来自手机摄像头的 FPS 不正确