OpenCV

Tổng quan về thư viện OpenCV (Open Source Computer Vision)

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.

modules_opencv_eitguide

Các modules OpenCV trong project Android

opencv_modules_android_eitguide

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.