Mẹo nhỏ: Để tìm kiếm chính xác các bài viết của Vuihecungchocopie.vn, hãy search trên Google với cú pháp: "Từ khóa" + "vuihecungchocopie". (Ví dụ: công thức giải rubik 3x3 vuihecungchocopie). Tìm kiếm ngay
41 lượt xem

Các Hàm Xử Lý Ảnh Trong Opencv : Lọc Số Trong Ảnh — Computer Vision

Chắc hẳn các bạn thường hay nghe đến OpenCV để xử lý hình ảnh và được sử dụng rất phổ biến. Trong bài viết hôm nay, mình sẽ chia sẻ cho các bạn các sử dụng OpenCV cho người mới bắt đầu chưa có chút kinh nghiệm nào liên quan để xử lý ảnh nhé.

Đang xem: Các hàm xử lý ảnh trong opencv

Giới thiệu OpenCV

OpenCV là dự án bắt đầu tại hãng Intel vào năm 1999 bởi Gary Bradsky và ra mắt lần đầu tiên vào năm 2000. Sau đó Vadim Pisarevsky gia nhập và quản lý nhóm. Vào năm 2005, OpenCV được sử dụng trên xe tự lái Stanley và chiếc này đã vô địch giải đấu 2005 DARPA Grand. Tiếp theo nó tiếp tục được cải tiến và phát triển dưới sự hỗ trợ của Willow Garage bên cạnh với Gary Bradsky và Vadim Pisarevsky. Hiện tại OpenCV hỗ trợ vô số các thuật toán liên quan để lĩnh vực thị giác máy tính (computer vision) và lĩnh vực học máy (machine learning).

OpenCV có thể sử dụng được ở hầu hết các ngôn ngữ như C++, Python, Java … và các hệ điều hành khác nhau như Windows, Linux, OS X, Android, iOS. Ngoài ra nó thể sử dụng card đồ họa GPU để xử lý nhằm tốc độ xử lý.

Trong bài viết này mình sẽ sử dụng ngôn ngữ Python để thực hiện các ví dụ do ngôn ngữ này có cú pháp đơn giản, dễ hiểu và cấu hình môi trường đơn giản

XEM THÊM:  Chợ Máy Ảnh Phim Cũ, Máy Quay Phim Cũ Giá Rẻ Tại Toàn Quốc, Máy Ảnh Cũ Giá Tốt Tháng 7, 2021 Máy Ảnh

1. Cài đặt môi trường

Trong bài viết này mình sử dụng python 3 với thư viện opencv-python phiên bản 4.2.0.34.

Ở đây để đơn giản cho việc cài đặt thì chúng ta sử dụng một thư viện có sẵn trên kho quản lý gói của python là opencv-python. Đây là một thư viện không phải của tổ chức OpenCV tuy nhiên nó có tính năng y hệt và được cập nhật thường xuyên theo sự thay đổi của OpenCV. Hay nói cách khác đây là một đóng gói cho OpenCV trên kho thư viện của python. Nếu bạn muốn sử dụng opencv phiên bản gốc thì lên trang sourceforge.net chọn phiên bản rồi tải xuống. Tiếp theo là giải nén và cài đặt bằng tay theo hướng dẫn. Vì cách cài đặt này để cái đặt cho nhiều ngôn ngữ khác nhau nên cách này không khuyến khích cho người vừa bắt đầu sử dụng opencv.

Sử dụng đoạn lênh sau để cài đặt gói từ kho thư viện pip

pip install opencv-pythonĐể kiểm tra cài đặt thành công hay không ta thực hiện đoạn lênh sau để kiểm tra phiên bản của opencv-python. Tùy từng thời điểm thì phiên bản của gói sẽ khác nhau. Các phiên bản mới là cập nhật cho opencv mới hơn.

import cv2print(cv2.__version__)

2. Hiển thị hình ảnh

Đầu tiên ta tạo một đối tượng chứa thông tin ảnh được tải lên từ file. Sau đó hiện thị hình ảnh lên cửa sổ giao diện.

img = cv2.imread(“digital-neon.jpg”)cv2.imshow(“Display Image”, img)cv2.waitKey(0)

XEM THÊM:  Ghim Trên 120 + Hình Ảnh Thang Máy Gia Đình Đẹp Nhất, Một Số Hình Ảnh Đã Thi Công
*

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

Xem thêm: Kích Thước Ảnh 4X6 Online Trong Vài Click, Tạo Ảnh Thẻ 3X4 4X6 Online Trong Vài Click

3. Lấy kích thước của ảnh

img = cv2.imread(“digital-neon.jpg”)(h, w, d) = img.shapeprint(“width={}, height={}, depth={}”.format(w, h, d))Output: width=580, height=326, depth=3Ở đây biến img 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 img.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.

4. Lấy giá trị màu ở một điểm ảnh

Đoạn lệnh sau lấy ra giá trị màu ở điểm ảnh tại vi trí 50, 50 với gốc tọa độ là điểm trên cùng bên trái hình ảnh.

*

(B, G, R) = img<50, 50>print(“R={}, G={}, B={}”.format(R, G, B))output: R=96, G=100, B=111Giá trị các thành phần màu có giá trị từ 0 đên 255.

5. Cắt ảnh

Đoạn lệnh sau cắt ảnh có tọa độ điểm trên cùng bên trái là (50, 60) và tọa độ điểm dưới cùng bên phải là (350, 360).

roi = img<50:350, 60:360>cv2.imshow(“Region Of Interest”, roi)cv2.waitKey(0)

*

6. Thay đổi kích thước ảnh

Để thay đổi kích thước của ảnh trong opencv 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 580 pixel sang ảnh có chiều rộng là 300 pixel.

XEM THÊM:  Tổng Hợp Hình Ảnh Gia Đình Đẹp, Hạnh Phúc Và Ý Nghĩa Nhất, Tổng Hợp Hình Ảnh Gia Đình Đẹp Nhất

img = cv2.imread(“digital-neon.jpg”)(h, w, d) = img.shaper = 300.0 / w dim = (300, int(h * r))resized = cv2.resize(img, dim)

*

7. Xoay ảnh

Để xoay được ảnh đầu tiên ta cần xác định gốc xoay và hướng xoay. Sau khi xác định xong tiếp theo ta tính ma trận xoay bằng hàm getRotationMatrix2D trong opencv. Cuối cùng ta nhân ma trận này với ma trận ảnh gốc ta được ảnh sau khi xoay.

Xem thêm: Cách Làm Thịt Bò Khô Bằng Máy Sấy Thịt Bò Khô Gia Đình, Máy Sấy Thịt Bò Khô

Đoạn lệnh dưới đây xoay ảnh một góc 45 theo chiều ngược kim đồng hồ với gốc xoay là điểm chính giữa hình ảnh.

img = cv2.imread(“digital-neon.jpg”) (h, w, d) = img.shape center = (w // 2, h // 2) M = cv2.getRotationMatrix2D(center, 45, 1.0) rotated = cv2.warpAffine(img, M, (w, h))

*

Tạm kết

Với vài chức năng cơ bản để xử lý ảnh ở bài viết này bạn có thể làm được một ứng dụng đơn giản để chỉnh sửa ảnh với OpenCV. Trong các phần tiếp theo, mình sẽ giới thiệu thêm các chức năng xử lý ảnh mạnh hơn như xác định biên của
các đối tượng trong ảnh, tính số đối tượng trong ảnh, loại bỏ nhiễu, xác đinh người trong ảnh …

Công khai: VUIHECUNGCHOCOPIE là trang web Tổng hợp hình ảnh - thủ thuật hay, trước kia thuộc Chocopie Vietnam. Mời thính giả đón xem.

Chúng tôi trân trọng cảm ơn quý độc giả luôn ủng hộ và tin tưởng chúng tôi!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *