首页 > 解决方案 > 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通常只是空的并且retFalse.

标签: pythonopencvvideo

解决方案


推荐阅读