Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Làm việc với Video trong OpenCV bằng Python
OpenCV là một thư viện mạnh mẽ, được ứng dụng trong nhiều lĩnh vực liên quan đến video như: điều khiển drone, robot, định vị và điều hướng xe, camera giám sát, theo dõi video, và các hệ thống nhúng như Arduino hay Raspberry Pi.

Video thực chất là một chuỗi các khung hình (frame) được hiển thị liên tục với tốc độ tính bằng khung hình mỗi giây (fps). Bài viết này sẽ hướng dẫn bạn cách:
- Đọc video từ file hoặc webcam.
 - Hiển thị từng khung hình.
 - Lưu video vào file.
 
Dưới đây là video mẫu từ Kaggle.
Đọc video trong OpenCV trong Python
Có hai cách để đọc video: từ file hoặc từ webcam. OpenCV cung cấp đối tượng VideoCapture để thực hiện việc này.
Bài viết này được đăng tại [free tuts .net]
Cú pháp:
cv2.VideoCapture(filename)
filename: Tên file video (nếu file nằm cùng thư mục với chương trình) hoặc đường dẫn đầy đủ (nếu file ở thư mục khác).
Ví dụ: Đọc video từ file
import cv2  
# Đọc video từ file 
cap = cv2.VideoCapture('Flyover.mp4')  
while cap.isOpened():  
    # Đọc từng khung hình  
    ret, frame = cap.read()  
    if ret:  
        # Hiển thị khung hình  
        cv2.imshow('Frame', frame)  
        # Nhấn phím 'q' để thoát  
        if cv2.waitKey(25) & 0xFF == ord('q'):  
            break  
    else:  
        break  
# Giải phóng đối tượng  
cap.release()  
cv2.destroyAllWindows()  
Giải thích:
cap.isOpened(): Kiểm tra xem video đã được mở thành công hay chưa, trả về True/False.
cap.read(): Đọc từng khung hình, trả về một tuple:
ret: Giá trị boolean, xác nhận khung hình có đọc được không.frame: Khung hình hiện tại.
cv2.imshow(): Hiển thị khung hình trong một cửa sổ.
cv2.waitKey(): Dừng hiển thị trong khoảng thời gian nhất định (đơn vị: ms). Trong ví dụ trên, nhấn phím q để thoát.
cap.release(): Giải phóng bộ nhớ và đóng đối tượng video.
Truy cập thuộc tính video
Sử dụng cap.get(propId) để lấy thông tin về video:
propId: Thuộc tính video (ví dụ: chiều rộng, chiều cao, số khung hình mỗi giây).
Một số thuộc tính thông dụng:
cap.get(3): Chiều rộng (width).cap.get(4): Chiều cao (height).cap.get(5): Tốc độ khung hình (fps).
Ngoài ra, bạn có thể thay đổi giá trị bằng cap.set(propId, value).
Đọc video từ webcam
Sử dụng cv2.VideoCapture(0) để đọc video từ camera đầu tiên. Thay 0 bằng 1 để chọn camera khác.
Ghi video trong OpenCV trong Python
OpenCV cung cấp đối tượng VideoWriter để lưu video vào file .
Cú pháp:
cv2.VideoWriter(Filename, Fourcc_code, FrameRate, FrameSize)
Filename: Tên file video đầu ra.Fourcc_code: Mã nén video (4-byte code). Ví dụ:cv2.VideoWriter_fourcc(*'XVID').FrameRate: Tốc độ khung hình (fps).FrameSize: Kích thước khung hình (rộng, cao).
Ví dụ: Ghi video
import cv2  
# Đọc video từ file 
cap = cv2.VideoCapture('Flyover.mp4')  
# Khởi tạo VideoWriter  
fourcc = cv2.VideoWriter_fourcc(*'XVID')  
out = cv2.VideoWriter('Output.mp4', fourcc, 10.0, (1280, 720))  
while cap.isOpened():  
    ret, frame = cap.read()  
    if ret:  
        # Ghi từng khung hình vào file 
        out.write(frame)  
        # Hiển thị khung hình  
        cv2.imshow('Frame', frame)  
        if cv2.waitKey(25) & 0xFF == ord('q'):  
            break  
    else:  
        break  
# Giải phóng đối tượng  
cap.release()  
out.release()  
cv2.destroyAllWindows()  

            Các kiểu dữ liệu trong C ( int - float - double - char ...)        
            Thuật toán tìm ước chung lớn nhất trong C/C++        
            Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)        
            ComboBox - ListBox trong lập trình C# winforms        
            Random trong Python: Tạo số random ngẫu nhiên        
            Lệnh cin và cout trong C++        
                Cách khai báo biến trong PHP, các loại biến thường gặp            
                Download và cài đặt Vertrigo Server            
                Thẻ li trong HTML            
                Thẻ article trong HTML5            
                Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên            
                Cách dùng thẻ img trong HTML và các thuộc tính của img            
                Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng