Hình ảnh lấy mẫu Python

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 pixel

Ví 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

  1. 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]
    1. Downscale [Giảm kích thước của hình ảnh]
    2. Upscale [Tăng kích thước của hình ảnh]
  2. Không bảo toàn Tỷ lệ khung hình
    1. 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]
    2. 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]
  3. 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[]

Upsampling có cải thiện chất lượng hình ảnh không?

Lấy mẫu lên làm tăng độ phân giải của hình ảnh bằng cách thêm nhiều pixel hơn trên mỗi đơn vị đo lường . Chất lượng hình ảnh có thể bị giảm do các pixel mới được nội suy dựa trên màu của các pixel lân cận; .

Upsampling một hình ảnh có nghĩa là gì?

Lấy mẫu lên là việc tăng độ phân giải không gian trong khi vẫn giữ nguyên dạng 2D của hình ảnh . Nó thường được sử dụng để phóng to một vùng nhỏ của hình ảnh và để loại bỏ hiệu ứng điểm ảnh phát sinh khi hình ảnh có độ phân giải thấp được hiển thị trên một khung tương đối lớn.

Bạn có thể Upsample một hình ảnh bao nhiêu?

Bao nhiêu để Upsample?

Thuật toán nào được sử dụng để lấy mẫu?

Các thuật toán khả dụng để lấy mẫu tăng lần lượt là láng giềng gần nhất và tuyến tính, song tuyến tính, song phương và tam giác cho Tenor đầu vào 3D, 4D và 5D .

Chủ Đề