【发布时间】:2021-11-29 17:53:16
【问题描述】:
我正在使用opencv-python,当我执行以下代码时:
index = 0
cap = cv2.VideoCapture(video_path)
while True:
offset = cap.get(cv2.CAP_PROP_POS_MSEC)
print(cv2.__version__, index, offset)
ok, frame = cap.read()
if not ok:
break
index += 1
我得到以下输出:
3.4.7 0 0.0
3.4.7 1 33.36666666666667
3.4.7 2 66.73333333333333
3.4.7 3 100.10000000000001
3.4.7 4 133.46666666666667
如果我在版本 3.4.8.29 上执行此代码,我会得到以下输出:
3.4.8 0 0.0
3.4.8 1 0.0
3.4.8 2 33.36666666666667
3.4.8 3 66.73333333333333
3.4.8 4 100.10000000000001
如果我在版本 4.5.2.52 上执行它,我会得到:
4.5.2 0 0.0
4.5.2 1 0.0
4.5.2 2 0.0
4.5.2 3 0.0
4.5.2 4 0.0
问题首先是,哪一个是正确的?看起来 3.4.7 是正确的,但它似乎也在版本之间随机变化。
以及如何修改其他版本以获得正确的结果,与3.4.7相同
【问题讨论】:
-
您可以使用 FFprobe(命令行工具)来提取 PTS 时间戳,如 here 所述。
ffprobe -i vid.mp4 -show_frames -show_entries frame=pkt_pts_time -of csv=p=0 > frames.txt -
你能测试一下新版本是否读取了一些空帧吗?那么所有版本对于可读的非空帧可能都是正确的。
-
@Rotem 这是您建议的结果:0.000000 0.033367 0.066733 0.100100
-
@micka “空框架”是什么意思?
-
图片大小为0宽高。
标签: python python-3.x opencv opencv-python