Get in touch
or send us a question?
CONTACT

[AI by Examples] – Unit 4: Giới thiệu thư viện xử lý ảnh OpenCV, hướng dẫn cài đặt và một số ví dụ

thumbnail

Table of contents

1. Giới thiệu về thư viện xử lý ảnh OpenCV

2. Ứng dụng của OpenCV trong thực tế

3. Tính năng cơ bản và các module hay dùng của OpenCV

4. Hướng dẫn cài đặt chi tiết OpenCV

5. Một số thao tác xử lý ảnh cơ bản với OpenCV

1. Giới thiệu về thư viện xử lý ảnh OpenCV

OpenCV viết tắt cho Open Source Computer Vision Library. Nó là thư viện nguồn mở hàng đầu cho Computer Vision và Machine Learning, và cho đến thời điểm này nó có thêm tính năng tăng tốc GPU cho các hoạt động theo real-time.

2. Ứng dụng của OpenCV trong thực tế

OpenCV được sử dụng rất nhiều trong thực tế, nổi bật chúng ta có thể kể đến:

+ Kiểm tra và giám sát tự động, bán tự động

+ Phân tích, xử lý ảnh trong y học nhằm chuẩn đoán và điều trị bệnh

+ Phục hồi, nâng cao chất lượng hình ảnh

+ Robot và các thiết bị tự động (ô tô tự lái)

……

3. Tính năng cơ bản và các module hay dùng của OpenCV

Các tính năng chính của OpenCV có thể kể đến:

+ Xử lý và hiển thị hình ảnh, video, stream

+ Phát hiện và xử lý vật thể

+ Machine learing và clustering

+ Hỗ trợ tăng tốc GPU

…..

Các module phổ biến trên OpenCV:

+ Core functionality (core)

+ Image Processing (imgproc)

+ Video Analysis (video)

+ Camera Calibration and 3D Reconstruction (calib3d)

+ 2D Features Framework (features2d)

+ Object Detection (objdetect)

+ High-level GUI (highgui)

+ Video I/O (videoio)

+ GPU

và một số module khác. Để hiểu rõ hơn về công dụng từng module này chúng ta sẽ có thể tìm hiểu thêm bằng cách tìm kiếm trên google. Trong khuôn khổ bài này chúng ta không đi sâu vào nó, chúng ta sẽ hiểu thêm ở các bài sau, thông qua việc sử dụng một số module bên trên.

4. Hướng dẫn cài đặt chi tiết OpenCV

Đầu tiên, chúng ta kích hoạt môi trường venv của project đang làm việc:

$ source venv/bin/activate

Tiếp theo, chúng ta sẽ tiến hành cài đặt OpenCv vào project. Trong bài hướng dẫn này, chúng ta sẽ học cách cài đặt OpenCV chạy trên hệ thống Ubuntu 18.04.

OpenCV có thể cài đặt trên Ubuntu theo 2 cách:

+ Cài đặt từ kho lưu trữ của Ubuntu

+ Biên dịch từ source code

Trong bài này chúng ta sẽ tiến hành cài đặt theo cách cài đặt từ kho lưu trữ của Ubuntu.

Một lưu ý quan trong khác khi chúng ta cài đặt OpenCV là cần bổ sung thêm các thư viện mà nó yêu cầu thêm, đó là NumPy. Ngoài ra, chúng ta có thể cài đặt thêm Matplotlib cho mục đích vẽ biểu đồ trực quan hóa dữ liệu, tuy nhiên 2 thư viện này chúng ta đã cài đặt ở bài trước nên chúng ta chỉ việc cài OpenCV thôi 😀

Ở màn hình terminal, chúng ta gõ lệnh:

$ sudo apt update

$ sudo apt install python-opencv

Để kiểm tra cài đặt được chưa, chúng ta import cv2 và hiển thị OpenCV version:

import cv2 as cv

print(cv.__version__)

Output:

4.4.0

Như vậy là chúng ta đã cài đặt xong OpenCV, giờ là lúc chúng ta có thể nghịch bất cứ tính năng nào của nó rồi nhé!

5. Một số thao tác xử lý ảnh cơ bản với OpenCV

Đọc và hiển thị ảnh

image_path = “samedata/HoangDan.jpg”

image_read = cv.imread(image_path)

cv.imshow(‘Hien thi anh’, image_read)

cv.waitKey(0)

Ở đây HoangDan.jpg là file hình ảnh để test, hàm waitKey(0) là hàm chờ không cho thoát cửa sổ hiển thị ảnh ngay lập tức mà chờ người dùng nhấn phím bất kỳ để thoát.

Output:

Kiểm tra kích thước của ảnh

Đoạn code sau đây lấy giá trị kích thước của ảnh:

image_path = “samedata/HoangDan.jpg”

image_read = cv.imread(image_path)

(h, w, d) = image_read.shape

print(“rong={}, cao={}, sau={}”.format(w, h, d))

Ở đây biến image_read là một đối tượng của Numpy array chứa giá trị màu của từng điểm ảnh trên các không gian màu khác nhau. Lệnh image_read.shape để lấy ra kích thước của mảng này với h, w, d lần lượt là chiều cao, chiều rộng, độ sâu của bước ảnh. Với ảnh có màu thì độ sau thường là 3, ảnh đen trắng là 1.

Output:

rong=640, cao=640, sau=3

Thay đổi kích thước và lưu lại thành ảnh mới

Để thay đổi kích thước của ảnh thì chúng ta sẽ dùng hàm resize. Hàm này cần xác định rõ chiều cao, chiều rộng ảnh sau khi biến đổi. Tuy nhiên ảnh sau khi thay đổi thường cùng tỷ lệ chiều cao, chiều rộng với ảnh gốc. Đoạn lệnh sau biến đối ảnh gốc có chiều rộng 640 pixel sang ảnh có chiều rộng là 320 pixel. Sau đó lưu ảnh vừa resize vào thư mục samedata với tên ảnh là anh1.jpg

(h, w, d) = image_read.shape

r = 320.0 / w

dim = (320, int(h * r))

resized = cv.resize(image_read, dim)

cv.imwrite(‘samedata/HoangDan1.jpg’, resized)

cv.waitKey(0)

Nội dung của ngày tiếp theo chúng ta sẽ học cách sử dụng import dữ liệu từ csv, cách chúng ta hiểu dữ liệu thông qua thống kê và đồ thị bằng các ví dụ cụ thể, hẹn gặp các bạn ở bài tiếp theo nhé!

Hang in there, don’t give up!