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
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ảngdsize
là kích thước mong muốn của hình ảnh đầu ra, được đưa ra dưới dạng tuplefx
là hệ số tỷ lệ dọc theo trục X hoặc trục Ngangfy
là hệ số tỷ lệ dọc theo trục Y hoặc trục Dọcinterpolation
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
- 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
- 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
- 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
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?
0 đọc tệp đã cho trongimport 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ị pixelimport 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 caoimport 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]
- src. shape[1] đưa ra chiều rộng của hình ảnh nguồn.
3 tính 50% chiều rộng ban đầu. Tương tự chiều cao cũng được tínhimport 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]
- Sau đó, chúng tôi đang đặt kích thước mong muốn
dsize
với
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ánimport 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 ảnhimport 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]
src
thành kích thướcdsize
và trả về mảng có nhiều mảng- Sử dụng
0, chúng tôi đang ghi đầu ra củaimport 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]
7 vào một tệp hình ảnh cục bộ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]
Hình ảnh đầu ra
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
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
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