我正在尝试使用Python和CV2抓取视频中特定的帧(例如第0帧,第10帧,第20帧...)并将它们保存为图像。但由于某些原因,我的代码只保存了第一帧。所有其他帧都被创建了,但大小为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)
吗? - CupinaCoffeecap.set(1,frame_no_int)
代替,这个可以工作。行为很奇怪。 - Tina J