gpt4 book ai didi

c++ - OpenCV - 无法抓取所有帧

转载 作者:行者123 更新时间:2023-11-28 06:58:22 26 4
gpt4 key购买 nike

我有一个关于使用 OpenCV 捕获帧的非常基本的问题。我的代码如下所示:

VideoCapture cap(0);
cv::Mat mat;
int i = 0;
while(cap.read(mat)==true) {
//some code here
i = i + 1;
}

效果很好。但是,当我通过 OpenCV 查看 logcat 日志时,它说

FRAMES 收到 225,抓取 123。

这个抓取的 (123) 通常与我代码中的变量“i”(循环次数)匹配。理想情况下,我的代码应该能够读取所有接收到的帧,不是吗?有人可以解释这种行为吗?

最佳答案

调用 cap.read(mat) 需要一定的时间,因为它必须获取和解码图像的视频源并将其转换为 cv::Mat格式。此时间量似乎大于视频的捕获速率。您可以使用以下方法确定视频捕获的每秒帧数:

double frames_per_second = cap.get(CV_CAP_PROP_FPS);

尝试计时您的 cap.read(mat) 调用所花费的时间,看看您是否可以看到接收帧与抓取帧的比率与捕获时间比率之间的关系 ( 1/frames_per_second) 和 cap.read(mat) 执行所需的时间。

来源: http://opencv-srf.blogspot.ca/2011/09/capturing-images-videos.html

关于c++ - OpenCV - 无法抓取所有帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873309/

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