Giới thiệu
OpenCV (OpenSource Computer Vision) là một thư viện mã nguồn mở. OpenCV được phát hành theo giấy phép BSD, do đó nó hoàn toàn miễn phí cho cả học thuật và thương mại. Nó có các interface C++, C, Python, Java và hỗ trợ Windows, Linux, Mac OS, iOS và Android. OpenCV được thiết kế để tính toán hiệu quả và với sự tập trung nhiều vào các ứng dụng thời gian thực. Được viết bằng tối ưu hóa C/C++, thư viện có thể tận dụng lợi thế của xử lý đa lõi. Được sử dụng trên khắp thế giới, OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần. Phạm vi sử dụng từ nghệ thuật tương tác, cho đến lĩnh vực khai thác mỏ, bản đồ trên web hoặc công nghệ robot.
Trang chủ chính thức của OpenCV: http://opencv.org/
Trang download các phiên bản của OpenCV: http://opencv.org/downloads.html
Hiện tại bản mới nhất của thư viện OpenCV là bản 2.4.13
Tất cả document của thư viện này bạn có thể tìm thấy ở đây: http://docs.opencv.org/2.4/modules/refman.html
Các module của OpenCV
Các bạn thử download source code của OpenCV về và giải nén ra chúng ta sẽ thấy folder modules chứa tất các modules của thư viện OpenCV và mỗi module này sẽ được build dưới dạng thư viện liên kết tỉnh và thư viện liên kết động mà chúng ta sẽ sử dụng trong project. Mỗi module sẽ có một chức năng riêng biệt mà mình sẽ giới thiệu ở ngay sau đây.
Các modules OpenCV trong project Android
Có khá nhiều modules trong thư viện này nhưng mình sẽ giới thiệu một số module mà chúng ta làm việc thường xuyên nếu chúng ta sử dụng thư viện này
core
Đây là module chứa các cấu trúc, class cơ bản mà OpenCV sẽ sử dụng trong việc lưu trữ và xử lý hình ảnh như Mat, Scale, Point, Vec… và các phương thức cơ bản sử dụng cho các module khác
imgproc
Đây là một module xử lý hình ảnh của OpenCV bao gồm các bộ lọc (filter) linear và non-linear và các phép biến đổi hình học (tranformation) như resize hoặc các phép biến đổi affine, chuyển đổi hệ mày và các thuật toán liên quan đến histogram (biểu đồ) của hình ảnh.
highgui
Đây là một module cho phép tương tác với người dùng trên UI (User Interface) như hiển thị hình ảnh, video capturing.
features2d
Module tìm các đặc trưng (feature) của hình ảnh. Trong module có implement các thuật toán rút trích đặc trưng như PCA…
calib3d
Hiệu chuẩn máy ảnh và xây dựng lại 3D.
objdetect
Module cho việc phát hiện các đối tượng như khuôn mặt, đôi mắt, cốc, người, xe hơi, vv trong hình ảnh. Các thuật toán được sử dụng trong module này là Haar‐like Features.
ml
Module này chứa các thuật toán về Machine Learning phục vụ cho các bài toàn phân lớp (Classfitication) và bài toán gom cụm (Clustering). Ví dụ như thuật toán SVM (Support Vector Machine), ANN…
video
Module phân tích video gồm ước lượng chuyển động, trừ nền, và các thuật toán theo dõi đối tượng (object tracking).
Kết luận
Trong bài viết này mình đã hướng dẫn cho các bạn tổng quan và các module thường xuyên sử dụng trong OpenCV. Trong các bài viết sau chúng ta sẽ làm quen với cách đọc 1 hình ảnh và hiển thị lên cửa số Windows.