视频的持续时间(OpenCV)
Duration of a video (OpenCV)
我想获得视频的fps,但无法使用属性CV_CAP_PROP_fps。我曾想过,有了视频的帧数和持续时间,我可以得到它。问题是,我找不到一些方法来给出持续时间。有人能帮我吗?
谢谢!
首先,在尝试获取/设置某些属性之前,至少从相机/视频中获取一帧。有时不做它可能会很好,但最好只是做它。
如果它不能解决你的问题,你可以尝试使用不同的属性:
cv::VideoCapture camera("some_movie.avi");
cv::Mat img;
camera >> img;
std::cout << camera.get(CV_CAP_PROP_FPS) << std::endl;
std::cout << camera.get(CV_CAP_PROP_FRAME_COUNT) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_AVI_RATIO) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_FRAMES) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_MSEC) << std::endl;
std::cout << "setting pos avi ratio to 1" << std::endl;
std::cout << camera.set(CV_CAP_PROP_POS_AVI_RATIO, 1.0) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_AVI_RATIO) << std::endl; //i think it's not working - returns bad position(same as the first call of camera.get(CV_CAP_PROP_POS_AVI_RATIO)
std::cout << camera.get(CV_CAP_PROP_POS_FRAMES) << std::endl;
std::cout << camera.get(CV_CAP_PROP_POS_MSEC) << std::endl;
结果:
30
1739
0.0333333
1
33.3333
将pos-avi比率设置为1
1
0.0333333
1739
57966.7
使用总时间(最后一帧的时间)和帧数,您可以自己计算fps。或者,您可以使用第一帧的位置-只需将1.0除以第一个帧的位置,就可以获得fps。
相关文章:
- 从持续时间构造std::chrono::system_clock::time_point
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 时间持续时间到时间字符串
- 指向(数据)成员的指针作为非类型模板参数,例如具有自动存储持续时间/无链接
- 为什么具有静态存储持续时间的同一内联变量在包含在 VS2017 编译的两个翻译单元中时会构造和销毁两次
- 将毫秒转换为给定格式的持续时间
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- 划分和乘以STD :: Chrono ::持续时间
- 静态存储持续时间初始化
- C++计划持续时间内(字体)资源的分配
- FFMPEG:具有不同持续时间的多路复用流
- 在不同翻译单元中具有静态存储持续时间的依赖非局部常量浮点变量的常量初始化
- 使用System_Clock :: TO_TIME_T警告持续时间_t
- 访问和存储/解析性std :: Chrono ::持续时间:: milliseconds(cpprest)时使用什么类型
- 我可以让QT到概要文件插槽执行持续时间吗?
- 在STD :: Chrono ::剩余时间测量的持续时间
- 自定义 AVIOContext 的未定义 AVFormatContext 持续时间
- 使用计时比较C++的持续时间/秒数并不像预期的那样工作
- 为什么 std::future::wait_for 不等待正确的持续时间
- 视频的持续时间(OpenCV)