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

Phát video ngược (reverse) với OpenCV Python

Đọc video, lưu các frame vào list, đảo ngược list, phát lại. Sử dụng cv2.VideoCapture và cv2.imshow.

Các bước

  1. Mở video với cv2.VideoCapture.
  2. Đọc frame bằng cap.read(), lưu vào list.
  3. Đảo ngược list: frames.reverse().
  4. Phát từng frame với cv2.imshow.
  5. Nhấn 'q' để thoát sớm.

Code hoàn chỉnh

import cv2

cap = cv2.VideoCapture('input_video.mp4')
frames = []

# Đọc tất cả frame
while True:
    ret, frame = cap.read()
    if not ret:
        break
    frames.append(frame)
cap.release()

# Phát ngược
for frame in reversed(frames):
    cv2.imshow('Reverse Video', frame)
    if cv2.waitKey(25) & 0xFF == ord('q'):
        break

cv2.destroyAllWindows()

Tối ưu bộ nhớ (video lớn)

Video lớn gây tràn RAM. Giải pháp:

  • Ghi frame ra disk (temp file) thay vì giữ trong RAM.
  • Dùng cv2.VideoWriter ghi video ngược trực tiếp.
  • Xử lý theo chunk.

Ghi video ngược ra file

import cv2

cap = cv2.VideoCapture('input.mp4')
fps = cap.get(cv2.CAP_PROP_FPS)
w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output_reverse.mp4', fourcc, fps, (w, h))

frames = []
while True:
    ret, frame = cap.read()
    if not ret: break
    frames.append(frame)
cap.release()

for frame in reversed(frames):
    out.write(frame)
out.release()
print("Done!")

Lưu ý

  • waitKey(25) ~ 40 FPS. Điều chỉnh theo FPS video gốc.
  • Mã codec: mp4v (MP4), XVID (AVI), MJPG.
  • OpenCV không hỗ trợ audio – video ngược sẽ không có âm thanh.