【发布时间】:2019-01-09 13:05:03
【问题描述】:
我正在尝试抓取视频中的特定帧(例如帧 0、10、20,...),并使用 Python 和 CV2 将它们保存为图像。由于某些原因,我的代码只保存了第一帧。创建所有其他帧,但大小为 0(它们已损坏)。
我该如何解决这个问题?
import cv2
from numpy import integer
number = 10;
filename = "18s.mp4";
def uniform():
cap = cv2.VideoCapture(filename);
frame_count= int(cap.get(cv2.CAP_PROP_FRAME_COUNT));
print(frame_count)
for x in range(0, number):
frame_no = 1*(x/number)
frame_no_int=int(frame_no*frame_count)
cap.set(2,frame_no);
ret, frame = cap.read()
cv2.imwrite(filename+'_frame_'+str(frame_no_int)+'.jpg', frame);
# When everything done, release the capture
cap.release()
if __name__ == '__main__':
uniform()
【问题讨论】:
-
不应该是
cap.set(2,frame_no)是cap.set(2,frame_no_int)? -
不,它采用 [0, 1] 范围内的浮点数。我改用
cap.set(1,frame_no_int),而这个工作。奇怪的行为。
标签: python python-3.x opencv video cv2