Thay đổi kích thước hình ảnh có nghĩa là thay đổi kích thước của nó, có thể là chiều rộng, chiều cao hoặc thay đổi cả hai. Ngoài ra, tỷ lệ khung hình của hình ảnh gốc có thể được giữ nguyên trong hình ảnh đã thay đổi kích thước. Để thay đổi kích thước hình ảnh, OpenCV cung cấp cv2. chức năng thay đổi kích thước []
Trong hướng dẫn này, chúng ta sẽ cú pháp của cv2. thay đổi kích thước và thực hành với các ví dụ được cung cấp cho hầu hết các tình huống gặp phải trong quá trình sử dụng thông thường
Cú pháp – cv2. thay đổi kích thước[]
Cú pháp của chức năng thay đổi kích thước trong OpenCV là
cv2.resize[src, dsize[, dst[, fx[, fy[, interpolation]]]]]
ở đâu
Tham sốDescriptionsrc[bắt buộc] nguồn/đầu vào imagedsize[bắt buộc] kích thước mong muốn cho hình ảnh đầu rafx[tùy chọn] hệ số tỷ lệ dọc theo hệ số tỷ lệ trục ngangfy[tùy chọn] dọc theo cờ nội suy trục dọc[tùy chọn] sử dụng một trong các phương pháp sau. INTER_NEAREST – phép nội suy lân cận gần nhất INTER_LINEAR – phép nội suy song tuyến tính [được sử dụng theo mặc định] INTER_AREA – lấy mẫu lại bằng cách sử dụng quan hệ vùng pixel. Nó có thể là một phương pháp ưa thích để khử nhiễu hình ảnh, vì nó cho kết quả không có moire. Nhưng khi phóng to hình ảnh, nó tương tự như phương pháp INTER_NEAREST. INTER_CUBIC – phép nội suy nhị phân trên vùng lân cận 4×4 pixel INTER_LANCZOS4 – phép nội suy Lanczos trên vùng lân cận 8×8 pixelVí dụ sử dụng cv2. chức năng thay đổi kích thước []
Thay đổi kích thước hình ảnh có thể được thực hiện theo nhiều cách. Chúng tôi sẽ xem xét các ví dụ minh họa các hoạt động thay đổi kích thước sau đây
- Giữ nguyên tỷ lệ khung hình [tỷ lệ chiều cao trên chiều rộng của hình ảnh được giữ nguyên]
- Downscale [Giảm kích thước của hình ảnh]
- Upscale [Tăng kích thước của hình ảnh]
- Không bảo toàn Tỷ lệ khung hình
- Chỉ thay đổi kích thước chiều rộng [Tăng hoặc giảm chiều rộng của hình ảnh giữ nguyên chiều cao]
- Chỉ thay đổi kích thước chiều cao [Tăng giảm chiều cao của ảnh giữ nguyên chiều rộng]
- Thay đổi kích thước thành chiều rộng và chiều cao cụ thể
Sau đây là hình ảnh gốc có kích thước [149.200,4] [chiều cao, chiều rộng, số kênh] mà chúng tôi sẽ thử nghiệm trên đó.
Ví dụ 1 – Thay đổi kích thước và giữ nguyên tỷ lệ khung hình
Giảm tỷ lệ với thay đổi kích thước[]
Trong ví dụ sau, giá trị
import cv2 img = cv2.imread['/home/img/python.png', cv2.IMREAD_UNCHANGED] print['Original Dimensions : ',img.shape] scale_percent = 60 # percent of original size width = int[img.shape[1] * scale_percent / 100] height = int[img.shape[0] * scale_percent / 100] dim = [width, height] # resize image resized = cv2.resize[img, dim, interpolation = cv2.INTER_AREA] print['Resized Dimensions : ',resized.shape] cv2.imshow["Resized image", resized] cv2.waitKey[0] cv2.destroyAllWindows[]1 giữ tỷ lệ phần trăm mà hình ảnh phải được chia tỷ lệ. Cung cấp giá trị 100 nâng cấp hình ảnh được cung cấp
thay đổi kích thước hình ảnh. py
import cv2 img = cv2.imread['/home/img/python.png', cv2.IMREAD_UNCHANGED] print['Original Dimensions : ',img.shape] scale_percent = 220 # percent of original size width = int[img.shape[1] * scale_percent / 100] height = int[img.shape[0] * scale_percent / 100] dim = [width, height] # resize image resized = cv2.resize[img, dim, interpolation = cv2.INTER_AREA] print['Resized Dimensions : ',resized.shape] cv2.imshow["Resized image", resized] cv2.waitKey[0] cv2.destroyAllWindows[]
đầu ra
Original Dimensions : [149, 200, 4] Resized Dimensions : [327, 440, 4]
Ví dụ 2 – Thay đổi kích thước và không giữ nguyên tỷ lệ khung hình
Chỉ thay đổi kích thước chiều rộng
Trong ví dụ này, chúng tôi đã cung cấp một giá trị cụ thể tính bằng pixel cho chiều rộng và giữ nguyên chiều cao
thay đổi kích thước hình ảnh. py
import cv2 img = cv2.imread['/home/img/python.png', cv2.IMREAD_UNCHANGED] print['Original Dimensions : ',img.shape] width = 440 height = img.shape[0] # keep original height dim = [width, height] # resize image resized = cv2.resize[img, dim, interpolation = cv2.INTER_AREA] print['Resized Dimensions : ',resized.shape] cv2.imshow["Resized image", resized] cv2.waitKey[0] cv2.destroyAllWindows[]
đầu ra
________số 8_______Vì chúng tôi chỉ tăng chiều rộng, hình ảnh đầu ra trông được kéo dài theo chiều ngang
Chỉ thay đổi kích thước chiều cao
Trong ví dụ sau, giá trị scale_percent giữ tỷ lệ phần trăm theo đó chiều cao phải được chia tỷ lệ. Hoặc bạn cũng có thể cung cấp một giá trị cụ thể bằng pixel
thay đổi kích thước hình ảnh. py
import cv2 img = cv2.imread['/home/img/python.png', cv2.IMREAD_UNCHANGED] print['Original Dimensions : ',img.shape] width = img.shape[1] # keep original width height = 440 dim = [width, height] # resize image resized = cv2.resize[img, dim, interpolation = cv2.INTER_AREA] print['Resized Dimensions : ',resized.shape] cv2.imshow["Resized image", resized] cv2.waitKey[0] cv2.destroyAllWindows[]
đầu ra
Original Dimensions : [149, 200, 4] Resized Dimensions : [440, 200, 4]
Vì chúng tôi chỉ tăng chiều cao nên hình ảnh đầu ra trông được kéo dài theo chiều dọc
Thay đổi kích thước thành chiều rộng và chiều cao cụ thể
Trong ví dụ sau, chúng tôi sẽ cung cấp giá trị cụ thể bằng pixel cho cả chiều rộng và chiều cao
thay đổi kích thước hình ảnh. py
import cv2 img = cv2.imread['/home/img/python.png', cv2.IMREAD_UNCHANGED] print['Original Dimensions : ',img.shape] width = 350 height = 450 dim = [width, height] # resize image resized = cv2.resize[img, dim, interpolation = cv2.INTER_AREA] print['Resized Dimensions : ',resized.shape] cv2.imshow["Resized image", resized] cv2.waitKey[0] cv2.destroyAllWindows[]
đầu ra
import cv2 img = cv2.imread['/home/img/python.png', cv2.IMREAD_UNCHANGED] print['Original Dimensions : ',img.shape] scale_percent = 60 # percent of original size width = int[img.shape[1] * scale_percent / 100] height = int[img.shape[0] * scale_percent / 100] dim = [width, height] # resize image resized = cv2.resize[img, dim, interpolation = cv2.INTER_AREA] print['Resized Dimensions : ',resized.shape] cv2.imshow["Resized image", resized] cv2.waitKey[0] cv2.destroyAllWindows[]0
Phần kết luận
Kết thúc Hướng dẫn OpenCV Python này, chúng ta đã học cách thay đổi kích thước hình ảnh trong Python bằng hàm OpenCV resize[]