#python #opencv #video
Вопрос:
Я пытаюсь получить последний кадр видео mp4 с помощью OpenCV. Этот код работает для некоторых видео и не работает для других. Я полагаю, что это как-то связано с частотой кадров видео, но я не совсем уверен. Попытка использовать cv2.CAP_PROP_POS_MSEC
свойство вместе с продолжительностью видео также не сработала. Частота кадров видео составляет 27,75 кадров в секунду.
def createsample(self, videopath) -> str:
"""Gets the last frame of the video as a sample."""
cap = cv2.VideoCapture(videopath)
sample = COGSPATH r"datasample.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
.
Комментарии:
1. все та же старая история. искать — это сложно. не полагайтесь на это. используйте библиотеки ffmpeg напрямую. OpenCV-это библиотека для компьютерного зрения, а не для обработки видеофайлов.
2. @DeepQuantum У вас есть пример видео, которым вы можете поделиться, где вы столкнулись с этой проблемой?