c++ - 在 OpenCV 中检索当前帧号

标签 c++ opencv frame vision

如何使用 OpenCV 检索视频的当前帧编号? OpenCV 是否有任何内置函数来获取当前帧,或者我必须手动完成?

最佳答案

您可以像下面这样使用捕获对象的“get”方法:

capture.get(CV_CAP_PROP_POS_FRAMES); // retrieves the current frame number

还有:

capture.get(CV_CAP_PROP_FRAME_COUNT); // returns the number of total frames 

顺便说一句,这些方法返回一个 double 值。

您也可以使用 cvGetCaptureProperty 方法(如果您使用旧的 C 接口(interface))。

cvGetCaptureProperty(CvCapture* capture,int property_id);

property_id 选项定义如下:

CV_CAP_PROP_POS_MSEC 0

CV_CAP_PROP_POS_FRAME 1

CV_CAP_PROP_POS_AVI_RATIO 2

CV_CAP_PROP_FRAME_WIDTH 3

CV_CAP_PROP_FRAME_HEIGHT 4

CV_CAP_PROP_FPS 5

CV_CAP_PROP_FOURCC 6

CV_CAP_PROP_FRAME_COUNT 7

  • POS_MSEC 是视频文件中的当前位置,以 毫秒。
  • POS_FRAME 是当前帧在视频中的位置(例如视频的第 55 帧)。
  • POS_AVI_RATIO 是以 0 到 1 之间的数字形式给出的当前位置 (当你想定位一个 trackbar 时,这实际上非常有用 允许人们浏览您的视频)。
  • FRAME_WIDTH 和 FRAME_HEIGHT 是个体的尺寸 要读取的视频帧(或在相机的 当前设置)。
  • FPS是视频文件特有的,表示帧数 每秒捕获视频。你需要知道 如果您想播放您的视频并让它在 正确的速度。
  • FOURCC 是压缩编解码器的四字符代码 用于您当前正在阅读的视频。
  • FRAME_COUNT 应该是视频中的总帧数,但是 这个数字并不完全可靠。

(来自 Learning OpenCV 书)

关于c++ - 在 OpenCV 中检索当前帧号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10475198/

相关文章:

iframe 中的 JavaScript 不起作用

java - 如何从 1jframe 链接到另一个 jframe

java - 使用 "su -c"燕子运行 Android NDK 可执行文件 printf()

c# - 分类库

python - 使用 cv2 调整图像大小后,如何获取新的边界框坐标

python - 使用 Opencv 从 python 中的图片中删除小边缘

c++ - 同步单个文件下载 - 它是 GUI Qt 应用程序中的正确方法吗?

c++ - std::list 的排序成员函数使用哪种排序算法?

macos - 无法在Mac上安装OpenCv:/usr/local中没有文件

javascript - 如何在 Chrome 扩展程序中控制注入(inject)内容脚本的 (i)frame 深度?