Đọc hình ảnh từ webcam trong opencv

Webcam là thiết bị input phổ biến nhất, rẻ tiền nhất so với các loại camera khác. Tầm 150k là đã mua được, loại tốt cũng khoảng 500k đến 1 triêu. Do đó Webcam phù hợp nhất với sinh viên và người nghiên cứu không chuyên.

Webcam bình thường tầm 13-14 fps (frame per second) chỉ phù hợp với các ứng dụng đơn giản. Muốn làm chuyên nghiệp cần mua những loại webcam tốt, thậm chí là camera IP để dễ dàng hơn trong việc giải quyết bài toán đặt ra.

Kinh nghiệm cho thấy phần cứng tốt sẽ lập trình dễ dàng hơn. Nếu không đầu tư cho phần cứng thì tính ra còn lỗ hơn về công sức, và đôi khi bế tắc.

OpenCV cung cấp sẵn class cv::VideoCapture() với rất nhiều khả năng: đọc webcam, đọc camera IP và video. Do 3 nguồn đó đều có chung đặc điểm là liên tục trả về hình ảnh (gọi là frame) nên dùng chung class.

Kiểm tra webcam trước khi lập trình

Cách 1: Dùng web kiểm tra, các bạn vào trang web https://webcamtests.com/fps để play webcam trực tiếp từ website

Cách 2: sử dụng phần mềm Webcam viewer portable V1.0 để kiểm tra

Đọc hình ảnh

Code bên dưới lấy hình ảnh từ camera 0, mỗi khi lấy hình ảnh xong sẽ dừng lại 30 milisecond để giới hạn còn 30 fps.

Có 2 cách đọc hình ảnh và đều cho ra kết quả như nhau:

Khi lấy được hình ảnh công việc tiếp theo là xử lý, tùy theo yêu cầu mà thời gian xử lý khác nhau. 1 ứng dụng được gọi là xử lý thời gian thực (realtime process) phải đạt tối thiểu 10fps. Có nghĩa là 1 frame bạn phải xử lý tối đa 100ms, nếu nhiều hơn phải xử lý đa luồng.

Lưu ý: phải copy file opencv_ffmpeg320.dll vào cùng folder với file exe (giả sử đang sử dụng opencv 3.2.0)


Các tham số khác

Các tham số bên dưới thiết lập cho phần cứng của webcam

Set FPS cho camera, tất nhiên là giá trị phải nhỏ hơn FPS của camera vì cao hơn là vô nghĩa.

Set size của hình ảnh input

Và còn nhiều tham số khác, tuy nhiên ít dùng nên không post lên đây.

Download

GitHub: https://github.com/thigiacmaytinh/TGMTcpp
Trong repo có nhiều project example, bạn chỉ cần build WebcamViewer.sln là được

Đọc thêm: Kết nối camera IP trong opencv

9 thoughts on “Đọc hình ảnh từ webcam trong opencv

  1. Ad có thể phát triên code này để lấy hình tử Camera sau đó xử lí bằng các phương pháp Tracking hoặc Template thì sẽ có nhiều ứng dụng thực tế. Chờ admin làm bài tiếp theo về xử lí ảnh từ video Camera.

    1. Bạn xem các video về tracking ở link youtube cuối trang web nhé

    1. Có làm 1 dự án về giám sát sản xuất túi khí xe hơi, tuy nhiên dự án thương mại thì không được chia sẻ

Leave a Reply