Việc kết nối với Webcam và điều khiển thiết bị này Capture được bằng Java có rất nhiều thư viện, tuy nhiên, xét về tốc độ, hiệu quả và khả năng triển khai trên các vi điều khiển thông minh thì OpenCV [9] là một lựa chọn tốt.
OpenCV là thư viện xử lý ảnh và thị giác máy tính lớn với hơn 500 thuật toán do hãng Intel phát triển bao gồm các hàm được viết bằng ngôn ngữ C và C++. OpenCV được sử dụng rất rộng rãi, vì lý do đó nên OpenCV có phiên bản dành riêng cho hệ điều hành Android và cho vi điều khiển ARM. Để lập trình Java với OpenCV cần thông qua một công cụ khác là JavaCV.
JavaCV là một thư viện cung cấp các hàm trên ngôn ngữ lập trình Java cho các thư viện thường được sử dụng bởi các nhà nghiên cứu thị giác máy tính OpenCV. Cho phép các lập trình viên Java có thể sử dụng OpenCV thông qua ngôn ngữ Java.
Một số mục tiêu thiết kế chính của OpenCV:
Nghiên cứu thị giác máy tính, không chỉ cung cấp mã nguồn mở mà còn tối ưu hóa cho cơ sở thị giác máy tính cơ bản.
Không tái phát minh quay vòng.
Phổ biến kiến thức về thị giác máy tính bằng cách cung cấp một cơ sở hạ tầng chung cho các nhà phát triển có thể sử dụng để xây dựng các ứng dụng trên đó, vì vậy mà sẽ mã nguồn sẽ dễ đọc và tái sử dụng.
Thúc đẩy các ứng dụng thương mại thị giác máy tính bằng cách cung cấp mã nguồn tối ưu hóa miễn phí mà không cần cam kết.
OpenCV có kiến trúc như sau:
Hình 3.5. Kiến trúc OpenCV
CV: Là thành phần chứa các xử lý hình ảnh cơ bản và các thuật toán thị giác máy tính cấp thấp: Lọc ảnh, biến đổi hình học hình ảnh, biến đổi tùy biến hình ảnh, biểu đồ, phát hiện tính năng, phân tích chuyển động và thao dỗi đối tượng. Phân tích cấu trúc và mô tả hình dạnh, phân chia phẳng, phát hiện đối tượng, hiệu chuẩn camera và tái thiết 3D.
ML: là thư viện học máy, trong đó bao gồm nhiều công cụ phân lớp và phân nhóm thống kê.
HighGUI: Cho phép thao tác trên file dữ liệu - các chứa năng để lưu trữ và tải hình ảnh, video.
CxCore: Cho phép các thao tác lên câu trúc cơ bản của dữ liệu, thao tác trên mảng, cấu trúc động, chức năng vẽ, …
Ngoài ra còn có thu viện CvAux (Đã cũ): Các thuật toán thí nghiệm.