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

c922

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 fullHD 60fps cũng tầm 2 đến 3 triệu đồng. 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.

Đọ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, tức là

Set FPS cho camera

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

Chương trình viết bằng OpenCV với ngôn ngữ C++, dùng để test camera. Cách sử dụng: mở file config.ini ra điền các thông số:
num_camera: số lượng camera cần xem
camera_0: ID của camera hoặc link stream của camera. Ví dụ: camera_0 = 0 hoặc camera_0 = rtsp://admin:admin@192.168.0.100/live.sdp Camera có thể từ camera_0, camera_1,…

[sociallocker]CameraExample.zip (2MB)[/sociallocker]

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

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

  1. NG Victor says:

    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.

  2. NG Victor says:

    Ad có làm bài nào về phát hiện sản phẩm qua xử lí camera ko z

    • vohungvi says:

      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ẻ

    • NG Victor says:

      ad rất rộng rãi chia ssẻ bài phát hiện biển số xe

  3. Canh Chua says:

    phần hiển thị link em like nhưng không thấy ạ

Leave a Reply