Tạo ảnh thumbnail từ video

Bản chất của video trong Thị giác máy tính là chuỗi các hình ảnh liên tiếp nhau để tạo ra chuyển động mượt mà. Để mắt người cảm thấy hình ảnh không bị giật thì tối thiểu là 24 fps (frame per second). Do đó, từ video ta có thể tách ra các hình ảnh rồi ghép lại để tạo thành ảnh thumbnail.

Bài này mục đích giới thiệu về các hàm cơ bản của OpenCV cho các bạn mới làm quen. Sau khi làm xong bài này có thể hiểu được:
– Trích xuất frame từ video
– ROI (region of interest)
– Save ảnh

Để tạo ra thumbnail có thể sử dụng Media Player Classic . Mở 1 file video, sau đó chọn menu: File -> Save thumbnails… rồi chọn số dòng, số cột là được ảnh thumbnail. Bên dưới là thumbnail 4×4:

Tạo ảnh thumbnail từ video

Các bước thực thi của chương trình

– Nhận tham số là: file video, số dòng, số cột, width, height mong muốn
– Tạo 1 ma trận (cv::Mat) output
– Tính toán số frame cần trích xuất = số dòng x số cột
– Trích xuất frame theo thời gian tương ứng
– Với mỗi frame, resize cho phù hợp rồi ghép vào ảnh output
– Save ảnh output

Ví dụ: yêu cầu tạo thumbnail 2 dòng x 2 cột, kích thước output là 640 x 480 pixel với video độ dài 2 phút 30fps:
– Video này có số lượng frame: 2 phút x 60 giây x 30 frame = 3600 frame
– Lấy 4 frame tại vị trí: 0, 1199, 2399 và 3599
– Resize 4 frame thành 320 x 240 pixel
– Ghép lại thành ảnh output theo thứ tự từ trái qua phải, trên xuống dưới
– Save ảnh là hoàn tất



Bên dưới là ảnh ví dụ về ROI: ghép ảnh vào 1 vùng nhỏ của bức ảnh khác
roi



Kết quả sau khi ghép
tạo ảnh thumbnail từ video

Source code

Download full project

Lưu ý: các bạn khi pull code về phải pull cả submodule vì thư viện opencv nằm ở submodule

Github

Leave a Reply