1.每隔幾幀取一張
import cv2 cap = cv2.VideoCapture("./query_video/test_video_0.mp4") c = 1 frameRate = 10 # 幀數截取間隔(每隔100幀截取一幀) while(True): ret, frame = cap.read() if ret: if(c % frameRate == 0): print("開始截取視頻第:" + str(c) + " 幀") # 這里就可以做一些操作了:顯示截取的幀圖片、保存截取幀到本地 cv2.imwrite("./capture_image/" + str(c) + '.jpg', frame) # 這里是將截取的圖像保存在本地 c += 1 cv2.waitKey(0) else: print("所有幀都已經保存完成") break cap.release()
2.每隔幾秒取一張
import cv2 cap = cv2.VideoCapture("./query_video/test_video_0.mp4") c = 1 timeRate = 10 # 截取視頻幀的時間間隔(這里是每隔10秒截取一幀) while(True): ret, frame = cap.read() FPS = cap.get(5) if ret: frameRate = int(FPS) * timeRate # 因為cap.get(5)獲取的幀數不是整數,所以需要取整一下(向下取整用int,四舍五入用round,向上取整需要用math模塊的ceil()方法) if(c % frameRate == 0): print("開始截取視頻第:" + str(c) + " 幀") # 這里就可以做一些操作了:顯示截取的幀圖片、保存截取幀到本地 cv2.imwrite("./capture_image/" + str(c) + '.jpg', frame) # 這里是將截取的圖像保存在本地 c += 1 cv2.waitKey(0) else: print("所有幀都已經保存完成") break cap.release()
參考:https://blog.csdn.net/David_jiahuan/article/details/105550791