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 - 799Trong 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!
Các bài cũ hơn
- Cài đặt và sử dụng thư viện OpenCV trong Python với Visual Code (10:48 AM - 24/12/2023)
- Sinh mã số kế tiếp dựa vào một mẫu cho trước bằng C# hoặc Java (10:47 AM - 22/12/2023)
- Lambda Expression và Functional Interface trong java 8 (09:11 AM - 21/12/2023)
- Các loại inheritance trong Java-Cách nhận biết extends và implements (10:37 AM - 15/12/2023)
- Chuyển đổi tiếng việt có dấu thành không dấu bằng Java áp dụng tạo URL thân thiện với các bộ máy tìm kiếm (SEO) (08:48 PM - 09/12/2023)