opencv,

Các hàm cốt lõi trong opencv (Phần 1)

Hanhbd Hanhbd Follow Apr 28, 2019 · 3 mins read
Các hàm cốt lõi trong opencv (Phần 1)
Share this

Trong bài viết trước chúng ta đã hiểu sơ qua về các hệ màu cơ bản dùng trong xử lý ảnh. Ở bài viết này chúng ta sẽ tiếp tục tìm hiểu một số hàm xử lý thông dụng trong Opencv

Các hàm xử lý ảnh trong Opencv

Hệ quy chiếu của ảnh trong Opencv

Ảnh trong Opencv thông thường được biển diễn dưới dạng ma trận số, giá trị trả về là một mảng nhiều chiều với các thông số : chiều cao, chiều rộng, số chiều ( với ảnh RGB thì là 3 ứng với 3 kênh màu). Trong đó pixel ở diểm trên cùng góc trái được quy định là gốc tọa độ mang giá trị x =0, y=0. Giá trị của x tăng từ trái sang phải trong khoảng [0;imgWidth], giá trị y tăng từ trên xuống dưới trong khoảng [0;imgHeight].

Trong một số trường hợp cần mô tả một đối tượng dạng 3D thì ngoài 2 chiều x,y thì sẽ thêm chiều z, điều này cho phép vị trí mỗi điểm trong hệ tọa độ được miêu tả là (x,y,z). Trong Opencv thì kích thước chiều z tăng dần theo hướng xa mắt người xem. Điều này khiến Opencv thành một hệ toạ độ thuận tay phải ( x tăng theo hướng phải, y tăng về hướng xuống dưới, z tăng theo hướng mắt người xem)

Các hàm xử lý cơ bản

1. Chỉnh sửa giá trị của các pixel

import os
import cv2

image_path = ''
img = cv2.imread(image_path)   # Đọc ảnh và trả về một ma trận 3 chiều ứng với các kênh màu B,G,R
px = img[100,100]              # Kiểm tra giá trị pixel với tọa độ (100,100)
print(px)                      
# [157 166 200]
img[100,100] = [255,255,255]   # Chỉnh sửa giá trị của pixel
print (img[100,100])
#[255 255 255]
img.item(50,50,2)              # Kiểm tra giá trị kênh màu Green của pixel tại tọa độ (50,50)
print(img.item(50,50,2))

img.itemset((50,50,2),100)     # Chỉnh sửa giá trị kênh Green của pixel
img.item(50,50,2)
print(img.item(50,50,2))

2. Kiểm tra các thuộc tính của ảnh

  • Kích cỡ của ảnh : ta có thể sử dụng img.shape. Hàm shape sẽ trả về một mảng 3 chiều bao gồm chiều cao, chiều rộng và số kênh màu.
  • Tổng số pixel : ta có thể sử dụng img.size
  • Datatype của ảnh : ta có thể sử dụng img.dtype
print(img.shape)

print(img.size)

print(img.dtype)

3. Tách và ghép các kênh màu

Với Opencv thì ngoài việc xử lý trên cả ảnh thì có thể tách riêng các kênh màu để xử lý sau đó có thể ghép các kênh đó lại với nhau.

b,g,r = cv2.split(img)      # Tách ảnh màu thành các kênh màu B,G,R
img = cv2.merge((b,g,r))    # Ghép các kênh màu lại với nhau 

Các phép toán trên ảnh

Hanhbd
Written by Hanhbd
Xin chào, Tôi là Hạnh. Blog này được xây dựng với mục đích chia sẻ kiến thức, kinh nghiệm của tôi về AI. Hi vọng những bài viết ở đây có thể giúp ích cho mọi người