Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Trích xuất khung hình (frame) từ video với OpenCV trong Python

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