Giới thiệu
OpenCV cho phép xử lý video frame-by-frame từ camera trực tiếp hoặc file video local. Bài viết hướng dẫn trích xuất các frame từ video và lưu thành file ảnh.
Cài đặt
pip install opencv-python
Mã nguồn trích xuất frame
import cv2
import os
def extractFrames(pathIn, pathOut):
"""Trích xuất frame từ video"""
# Tạo thư mục lưu frame
os.makedirs(pathOut, exist_ok=True)
# Mở file video
cap = cv2.VideoCapture(pathIn)
count = 0
while cap.isOpened():
ret, frame = cap.read()
if ret:
print('Read frame %d: %s' % (count, ret))
# Lưu frame dạng JPEG
cv2.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), frame)
count += 1
else:
break
cap.release()
cv2.destroyAllWindows()
def main():
extractFrames(r'f:/I Miss You.mp4', 'data')
if __name__ == "__main__":
main()
Kết quả
Thư mục data được tạo trên Desktop chứa các file frame0.jpg, frame1.jpg, ... tương ứng với từng khung hình của video.
Lưu ý
- Video lớn sẽ tạo rất nhiều file ảnh, cần đảm bảo dung lượng ổ cứng
- Có thể thêm điều kiện bước nhảy (skip frames) để giảm số lượng frame
- Đối với video dài, cân nhắc dùng multiprocessing để tăng tốc