CÔNG NGHỆ THÔNG TIN >> BÀI VIẾT CHỌN LỌC

Resize hình ảnh sử dụng thư viện OpenCV trong Pyhton

Đăng lúc: 10:57 AM - 25/12/2023 bởi Charles Chung - 799

Trong bài viết này thôi sẽ hướng dẫn các bạn thay đổi kích thước ảnh sử dụng thư viện OpenCV

Giới thiệu

Để thay đổi kích thước hình ảnh, hãy chia tỷ lệ hình ảnh dọc theo từng trục (chiều cao và chiều rộng), xem xét các yếu tố tỷ lệ đã chỉ định hoặc chỉ đặt chiều cao và chiều rộng mong muốn. Khi thay đổi kích thước hình ảnh:

  • Điều quan trọng là phải ghi nhớ tỷ lệ khung hình gốc của hình ảnh (tức là chiều rộng và chiều cao), nếu bạn cũng muốn duy trì tỷ lệ tương tự trong hình ảnh đã thay đổi kích thước.
  • Việc giảm kích thước của hình ảnh sẽ yêu cầu lấy mẫu lại các pixel.
  • Việc tăng kích thước của hình ảnh đòi hỏi phải xây dựng lại hình ảnh. Điều này có nghĩa là bạn cần nội suy các pixel mới.

Các kỹ thuật nội suy khác nhau được sử dụng để thực hiện các hoạt động này. Một số phương pháp có sẵn trong OpenCV, sự lựa chọn thường phụ thuộc vào ứng dụng cụ thể.

Để resize hình ảnh chúng ta sử dụng hàm resize trong OpenCV với cú pháp sau

resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

Trong đó các tham số trong ngoặc [] là tham số tùy chọn, cụ thể như sau

  • src: Đây là hình ảnh đầu vào bắt buộc, nó có thể là một chuỗi có đường dẫn của hình ảnh đầu vào (ví dụ: ‘test_image.png’).
  • dsize: Đó là kích thước mong muốn của hình ảnh đầu ra, nó có thể có chiều cao và chiều rộng mới.
  • fx: Hệ số tỷ lệ dọc theo trục hoành.
  • fy: Hệ số tỷ lệ dọc theo trục tung.
  • interpolation: Nó cho chúng ta tùy chọn các phương pháp thay đổi kích thước hình ảnh khác nhau.

Ví dụ 1:  Resize hình ảnh về kích thước có tỉ lệ 0.5 ảnh ban đầu

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import cv2
imgorigin=cv2.imread("images/oto-model.jpg")
# hiển thị ảnh ban đầu
cv2.imshow('img-origin',imgorigin)
# hiển thị ảnh cho đến khi nhấn 1 phím bất kỳ thì thực hiện các lệnh sau
cv2.waitKey(0)
# lấy kích thước ảnh height, width, channels
(h, w, d) = imgorigin.shape
# in ra kích thước ảnh gốc
print('width=',w,'height=',h)
# gọi hàm resize ảnh về 0.5 kích thước ảnh gốc
imgresized = cv2.resize(imgorigin, None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
# lấy kích thước ảnh height, width, channels
(h, w, d) = imgresized.shape
# in ra kích thước ảnh resize
print('width=',w,'height=',h)
# gọi hàm imshow ảnh đã resize
cv2.imshow('img',imgresized)
# luôn hiểu thị ảnh đến khi nhấn phím esc thì hủy cửa sổ
if cv2.waitKey(0)==27:
    cv2.destroyAllWindows()

Kết quả

Ví dụ 2: Resize ảnh về kích thước (500,300)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import cv2
imgorigin=cv2.imread("images/oto-model.jpg")
# hiển thị ảnh ban đầu
cv2.imshow('img-origin',imgorigin)
# hiển thị ảnh cho đến khi nhấn 1 phím bất kỳ thì thực hiện các lệnh sau
cv2.waitKey(0)
dim=(300,500)
# gọi hàm resize ảnh về có kích thước dim
imgresized = cv2.resize(imgorigin, dim,interpolation=cv2.INTER_LINEAR)
# gọi hàm imshow ảnh đã resize
cv2.imshow('img',imgresized)
# luôn hiểu thị ảnh đến khi nhấn phím esc thì hủy cửa sổ
if cv2.waitKey(0)==27:
    cv2.destroyAllWindows()

Kết quả

thay lời cảm ơn!

QUẢNG CÁO - TIẾP THỊ