我想在OpenCV中找到视频捕获的长度;
int frameNumbers = (int) cvGetCaptureProperty(video2, CV_CAP_PROP_FRAME_COUNT);
int fps = (int) cvGetCaptureProperty(video2, CV_CAP_PROP_FPS);
int videoLength = frameNumbers / fps;
但是这给了我一个小于真实答案的结果。我该怎么办?
答案 0 :(得分:5)
实际上,我不确定您今天尝试过的功能是否存在任何问题。但是,此代码段存在问题。这里,假设每秒帧数是一个整数值,但并非总是如此。例如,许多视频以29.97 FPS编码,并且此代码假设int(29.97)= 29,这显然导致视频长度的秒值更大。
如果我使用浮点值(浮点数)而不截断它们,计算似乎对我来说很好。
答案 1 :(得分:0)
看到这个类似的帖子。 OpenCV无法(尚)正确捕获帧数
OpenCV captures only a fraction of the frames from a video file