python - Python OpenCV 没有正确返回最后一帧
问题描述
我正在尝试使用 OpenCV 获取 mp4 视频的最后一帧。此代码适用于某些视频,不适用于其他视频。我相信这与视频的帧率有关,但我不太确定。尝试将该cv2.CAP_PROP_POS_MSEC
属性与视频的持续时间一起使用也不起作用。视频的帧率为 27.75 fps。
def createsample(self, videopath) -> str:
"""Gets the last frame of the video as a sample."""
cap = cv2.VideoCapture(videopath)
sample = COGSPATH + r"\data\sample.jpg"
cap.set(cv2.CAP_PROP_POS_FRAMES, cap.get(cv2.CAP_PROP_FRAME_COUNT) - 1) #should set last frame
ret, frame = cap.read()
cv2.imwrite(sample, frame)
cap.release()
cv2.destroyAllWindows()
return sample
在这段代码之后,frame
通常只是空的并且ret
是False
.
解决方案
推荐阅读
- javascript - Service Worker 中的动态缓存名称
- c++ - OpenGL:Arcball 相机旋转问题
- django - SAML 2.0 + Keycloak + Django
- ios - 故事板中的滚动视图不滚动
- excel - 当通过脚本生成表格时,在 VBA 中将 Web 表格提取到 Excel
- python - 用于 Sphinx/readthedocs 的 Google 样式文档字符串的样式指南检查?
- sql - SQL根据多列添加位置
- node.js - 获取本地的 BytecodeArray
在 Nodejs c++ 土地上 - excel - 如何防止插入的图像聚集?
- model-view-controller - 使用 GridMvc 更改行颜色