Làm cách nào để bạn thay đổi kích thước hình ảnh theo tỷ lệ trong python?

Theo mặc định, thay đổi kích thước chỉ thay đổi chiều rộng và chiều cao của hình ảnh. Tỷ lệ khung hình có thể được giữ nguyên hay không, dựa trên yêu cầu. Tỷ lệ khung hình có thể được giữ nguyên bằng cách tính toán chiều rộng hoặc chiều cao tương ứng với chiều cao hoặc chiều rộng của mục tiêu nhất định

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thay đổi kích thước hình ảnh trong Python bằng thư viện OpenCV

Làm cách nào để bạn thay đổi kích thước hình ảnh theo tỷ lệ trong python?

Cú pháp của hàm thay đổi kích thước cv2()

Sau đây là cú pháp của cv2. chức năng thay đổi kích thước ()

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

ở đâu

  • src là nguồn, ảnh gốc hoặc ảnh đầu vào ở dạng mảng có nhiều mảng
  • dsize là kích thước mong muốn của hình ảnh đầu ra, được đưa ra dưới dạng tuple
  • fx là hệ số tỷ lệ dọc theo trục X hoặc trục Ngang
  • fy là hệ số tỷ lệ dọc theo trục Y hoặc trục Dọc
  • interpolation có thể là một trong các giá trị sau
    • INTER_NEAREST
    • INTER_LINEAR
    • INTER_AREA
    • INTER_CUBIC
    • INTER_LANCZOS4

Dựa trên kỹ thuật nội suy đã chọn, thuật toán tương ứng được sử dụng. Bạn có thể coi phép nội suy là một phương pháp quyết định pixel nào nhận giá trị nào dựa trên các pixel lân cận của nó và tỷ lệ mà hình ảnh đang được thay đổi kích thước

Làm thế nào bạn có thể thay đổi kích thước một hình ảnh?

Bạn có thể thay đổi kích thước hình ảnh theo ba cách

  1. Giữ nguyên Tỷ lệ khung hình và tăng hoặc giảm chiều rộng và chiều cao của hình ảnh. Để làm cho mọi thứ rõ ràng, Tỷ lệ khung hình là tỷ lệ giữa chiều rộng hình ảnh và chiều cao hình ảnh
  2. Chỉ chia tỷ lệ hình ảnh dọc theo trục X hoặc trục Ngang. Có nghĩa là thay đổi chiều rộng, giữ nguyên chiều cao của ảnh gốc
  3. Chỉ chia tỷ lệ hình ảnh dọc theo trục Y hoặc trục Dọc. Có nghĩa là thay đổi chiều cao, giữ nguyên chiều rộng của ảnh gốc

Hình ảnh nguồn

Hãy xem xét hình ảnh sau đây. Chúng tôi sẽ sử dụng hình ảnh này làm hình ảnh đầu vào hoặc nguồn trong các chương trình ví dụ đang diễn ra của chúng tôi

Làm cách nào để bạn thay đổi kích thước hình ảnh theo tỷ lệ trong python?
Hình ảnh đầu vào

ví dụ 1. Thay đổi kích thước hình ảnh – cv2. thay đổi kích thước()

Trong ví dụ sau, chúng ta sẽ xem cách chúng ta có thể thay đổi kích thước hình ảnh trên bằng cách sử dụng cv2.resize() trong khi vẫn giữ nguyên tỷ lệ khung hình. Chúng tôi sẽ thay đổi kích thước hình ảnh thành 50% hình dạng thực tế của nó, tôi. e. , chúng tôi sẽ giảm chiều cao của nó xuống 50% so với ban đầu và chiều rộng xuống 50% so với ban đầu

Chương trình Python

import cv2
 
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)

#percent by which the image is resized
scale_percent = 50

#calculate the 50 percent of original dimensions
width = int(src.shape[1] * scale_percent / 100)
height = int(src.shape[0] * scale_percent / 100)

# dsize
dsize = (width, height)

# resize image
output = cv2.resize(src, dsize)

cv2.imwrite('D:/cv2-resize-image-50.png',output) 

Chúng ta đã làm gì trong chương trình Python ở trên?

  1. import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    #percent by which the image is resized
    scale_percent = 50
    
    #calculate the 50 percent of original dimensions
    width = int(src.shape[1] * scale_percent / 100)
    height = int(src.shape[0] * scale_percent / 100)
    
    # dsize
    dsize = (width, height)
    
    # resize image
    output = cv2.resize(src, dsize)
    
    cv2.imwrite('D:/cv2-resize-image-50.png',output) 
    0 đọc tệp đã cho trong
    import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    #percent by which the image is resized
    scale_percent = 50
    
    #calculate the 50 percent of original dimensions
    width = int(src.shape[1] * scale_percent / 100)
    height = int(src.shape[0] * scale_percent / 100)
    
    # dsize
    dsize = (width, height)
    
    # resize image
    output = cv2.resize(src, dsize)
    
    cv2.imwrite('D:/cv2-resize-image-50.png',output) 
    1 với kênh trong suốt (nếu có) và trả về một mảng khó hiểu với các giá trị pixel
  2. import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    #percent by which the image is resized
    scale_percent = 50
    
    #calculate the 50 percent of original dimensions
    width = int(src.shape[1] * scale_percent / 100)
    height = int(src.shape[0] * scale_percent / 100)
    
    # dsize
    dsize = (width, height)
    
    # resize image
    output = cv2.resize(src, dsize)
    
    cv2.imwrite('D:/cv2-resize-image-50.png',output) 
    2 được đặt thành 50. Chúng tôi sẽ chia tỷ lệ hình ảnh thành 50% kích thước ban đầu, cả chiều rộng và chiều cao
  3. src. shape[1] đưa ra chiều rộng của hình ảnh nguồn.
    import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    #percent by which the image is resized
    scale_percent = 50
    
    #calculate the 50 percent of original dimensions
    width = int(src.shape[1] * scale_percent / 100)
    height = int(src.shape[0] * scale_percent / 100)
    
    # dsize
    dsize = (width, height)
    
    # resize image
    output = cv2.resize(src, dsize)
    
    cv2.imwrite('D:/cv2-resize-image-50.png',output) 
    3 tính 50% chiều rộng ban đầu. Tương tự chiều cao cũng được tính
  4. Sau đó, chúng tôi đang đặt kích thước mong muốn dsize với
    import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    #percent by which the image is resized
    scale_percent = 50
    
    #calculate the 50 percent of original dimensions
    width = int(src.shape[1] * scale_percent / 100)
    height = int(src.shape[0] * scale_percent / 100)
    
    # dsize
    dsize = (width, height)
    
    # resize image
    output = cv2.resize(src, dsize)
    
    cv2.imwrite('D:/cv2-resize-image-50.png',output) 
    5 và
    import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    #percent by which the image is resized
    scale_percent = 50
    
    #calculate the 50 percent of original dimensions
    width = int(src.shape[1] * scale_percent / 100)
    height = int(src.shape[0] * scale_percent / 100)
    
    # dsize
    dsize = (width, height)
    
    # resize image
    output = cv2.resize(src, dsize)
    
    cv2.imwrite('D:/cv2-resize-image-50.png',output) 
    6 mới được tính toán
  5. import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    #percent by which the image is resized
    scale_percent = 50
    
    #calculate the 50 percent of original dimensions
    width = int(src.shape[1] * scale_percent / 100)
    height = int(src.shape[0] * scale_percent / 100)
    
    # dsize
    dsize = (width, height)
    
    # resize image
    output = cv2.resize(src, dsize)
    
    cv2.imwrite('D:/cv2-resize-image-50.png',output) 
    7 thay đổi kích thước hình ảnh src thành kích thước dsize và trả về mảng có nhiều mảng
  6. Sử dụng
    import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    # set a new width in pixels
    new_width = 300
    
    # dsize
    dsize = (new_width, src.shape[0])
    
    # resize image
    output = cv2.resize(src, dsize, interpolation = cv2.INTER_AREA)
    
    cv2.imwrite('D:/cv2-resize-image-width.png',output) 
    0, chúng tôi đang ghi đầu ra của
    import cv2
     
    src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)
    
    #percent by which the image is resized
    scale_percent = 50
    
    #calculate the 50 percent of original dimensions
    width = int(src.shape[1] * scale_percent / 100)
    height = int(src.shape[0] * scale_percent / 100)
    
    # dsize
    dsize = (width, height)
    
    # resize image
    output = cv2.resize(src, dsize)
    
    cv2.imwrite('D:/cv2-resize-image-50.png',output) 
    7 vào một tệp hình ảnh cục bộ

Hình ảnh đầu ra

Làm cách nào để bạn thay đổi kích thước hình ảnh theo tỷ lệ trong python?
cv2. thay đổi kích thước () bảo toàn tỷ lệ khung hình

ví dụ 2. cv2 Thay đổi kích thước hình ảnh theo chiều ngang

Trong ví dụ sau, chúng tôi sẽ chỉ chia tỷ lệ hình ảnh theo trục x hoặc trục Ngang. Và chúng tôi giữ nguyên chiều cao của hình ảnh

Trong kích thước, chúng tôi sẽ giữ nguyên chiều cao của hình ảnh gốc nhưng thay đổi chiều rộng

Chương trình Python

import cv2
 
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)

# set a new width in pixels
new_width = 300

# dsize
dsize = (new_width, src.shape[0])

# resize image
output = cv2.resize(src, dsize, interpolation = cv2.INTER_AREA)

cv2.imwrite('D:/cv2-resize-image-width.png',output) 

Hình ảnh đầu ra

Làm cách nào để bạn thay đổi kích thước hình ảnh theo tỷ lệ trong python?
cv2. thay đổi kích thước () dọc theo chiều rộng hoặc trục ngang

cv2 Thay đổi kích thước hình ảnh theo chiều dọc

Trong ví dụ sau, chúng tôi sẽ chỉ chia tỷ lệ hình ảnh theo trục y hoặc trục Dọc. Chiều rộng của hình ảnh đầu ra không thay đổi so với hình ảnh nguồn

Trong kích thước, chúng tôi sẽ giữ nguyên chiều rộng như ảnh gốc nhưng thay đổi chiều cao

import cv2
 
src = cv2.imread('D:/cv2-resize-image-original.png', cv2.IMREAD_UNCHANGED)

# set a new height in pixels
new_height = 200

# dsize
dsize = (src.shape[1], new_height)

# resize image
output = cv2.resize(src, dsize, interpolation = cv2.INTER_AREA)

cv2.imwrite('D:/cv2-resize-image-height.png',output) 

Hình ảnh đầu ra

Làm cách nào để bạn thay đổi kích thước hình ảnh theo tỷ lệ trong python?
cv2. thay đổi kích thước () dọc theo chiều cao hoặc trục dọc

Bản tóm tắt

Trong hướng dẫn Ví dụ về Python này, chúng ta đã học cách sử dụng OpenCV cv2. resize(), để thay đổi kích thước hình ảnh theo chiều rộng, chiều cao hoặc cả hai bằng cách giữ nguyên tỷ lệ khung hình hoặc không giữ nguyên tỷ lệ khung hình