Làm thế nào để bạn cắt một phần của hình ảnh trong python?

Bạn có muốn cắt ảnh trong python không? . Bạn sẽ biết cách cắt ảnh trong python bằng các gói OpenCV. OpenCV là thư viện tốt nhất để xử lý và chuyển đổi hình ảnh. Có nhiều chức năng sẵn có trong đó và sử dụng một trong các chức năng này, bạn sẽ cắt ảnh trong python

Các bước để cắt một hình ảnh trong python

Trong phần này, bạn sẽ biết tất cả các bước để cắt ảnh trong python. Bạn chỉ cần làm theo các bước để hiểu sâu

Bước 1. Nhập tất cả các thư viện cần thiết

Bước đầu tiên là nhập tất cả các thư viện cần thiết cho hướng dẫn này. Trong ví dụ của chúng tôi, Chúng tôi chỉ sử dụng OpenCV, vì vậy hãy nhập nó bằng câu lệnh nhập

import cv2

Bước 2. Đọc hình ảnh

Bước thứ hai là đọc hình ảnh để cắt xén. Trong OpenCV, bạn có thể đọc hình ảnh bằng cv2. phương thức imread[]. Nó sẽ đọc hình ảnh dưới dạng một mảng. Hãy đọc nó bằng dòng mã sau

Đây là một ví dụ về cách hình ảnh gốc được cắt thành một vùng nhỏ hơn từ [100, 20] phía trên bên trái đến [540, 210] phía dưới bên phải

Dung dịch. hình ảnh. gặm cỏ[]

Để cắt hình ảnh thành một khu vực nhất định, hãy sử dụng hàm PIL

from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
3 xác định khu vực sẽ được cắt bằng hai điểm trong hệ tọa độ. Giá trị pixel
from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
4 và
from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
5. Hai điểm đó xác định rõ ràng hình chữ nhật sẽ được cắt

Dưới đây là ví dụ về cách cắt xén hình ảnh với

from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
60 và
from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
61 pixel và điểm bắt đầu phía trên bên trái
from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
62 và
from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
63 pixel như minh họa trong hình trước

from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]

Bạn có thể thử với ví dụ này—bao gồm cả ảnh gốc và ảnh đã cắt được hiển thị ở đây—trong sân chơi tương tác của chúng tôi

Nhấp để chạy mã

Đây là hình ảnh gốc

from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
64

Và đây là hình ảnh đã cắt

from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
65

Bạn có muốn luôn dẫn đầu trò chơi bằng Python không?

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây

Có một chức năng cắt trong PIL để cắt hình ảnh nếu bạn biết tọa độ vùng cắt. Bạn sẽ cắt vùng trung tâm của Hình ảnh như thế nào nếu bạn muốn cắt một phần hình dạng Hình ảnh nhất định

Trong bài đăng này, chúng tôi sẽ sử dụng PIL, tensorflow, numpy trong sổ ghi chép colab của Google và tìm hiểu cách cắt hình ảnh ở giữa khi bạn thực sự không biết kích thước hình ảnh cắt mà chỉ biết phần kích thước hình ảnh cần cắt

Chúng tôi sẽ làm theo các bước ở đây

  1. PIL [thư viện hình ảnh trăn] để cắt một phần [70%] Hình ảnh ở trung tâm
  2. tensorflow image central_crop[] để cắt một phần nhỏ [70%] của Hình ảnh ở giữa
  3. Đọc hình ảnh bằng opencv và cắt hình ảnh ndarray để cắt nó

Bắt đầu nào

Trước tiên, chúng tôi sẽ bắt đầu sổ ghi chép google colab trong ổ đĩa google của mình và tải lên hình ảnh thử nghiệm “nơi làm việc. jpg”

Sử dụng PIL để cắt Hình ảnh ở giữa

Chúng tôi sẽ sử dụng Hình ảnh PIL. open[] để mở và xác định hình ảnh thử nghiệm của chúng tôi

from PIL import Image
import matplotlib.pyplot as plt

img=Image.open['./workplace.jpg']

Tiếp theo, chúng tôi muốn cắt 70% kích thước của hình ảnh, vì vậy chúng tôi sẽ tính bốn tọa độ sau cho hình ảnh đã cắt của chúng tôi. trái, trên, phải và dưới. Bên trái và bên phải là tọa độ x gần nhất bên trái và bên phải của hình ảnh và bên phải cũng có thể được biểu diễn dưới dạng [trái+chiều rộng] và bên dưới có thể được biểu diễn dưới dạng [trên+chiều cao]

Phần [70%] của hình ảnh được cắt từ trung tâm được đưa ra bởi biến frac

frac = 0.70

left = img.size[0]*[[1-frac]/2]
upper = img.size[1]*[[1-frac]/2]
right = img.size[0]-[[1-frac]/2]*img.size[0]
bottom = img.size[1]-[[1-frac]/2]*img.size[1]

Bây giờ chúng tôi biết tọa độ của hình ảnh đã cắt của mình, vì vậy chúng tôi sẽ chuyển các tham số này vào Hình ảnh PIL. crop[] để lấy hình ảnh đã cắt từ trung tâm

cropped_img = img.crop[[left, upper, right, bottom]]

Đây là mã đầy đủ để cắt kích thước 70% của Hình ảnh từ trung tâm

img=Image.open['./workplace.jpg']
frac = 0.70
left = img.size[0]*[[1-frac]/2]
upper = img.size[1]*[[1-frac]/2]
right = img.size[0]-[[1-frac]/2]*img.size[0]
bottom = img.size[1]-[[1-frac]/2]*img.size[1]
cropped_img = img.crop[[left, upper, right, bottom]]
plt.imshow[cropped_img]

Sử dụng mô-đun Tensorflow Image để cắt Hình ảnh ở giữa

Tenorflow tf. mô-đun hình ảnh chứa các chức năng khác nhau để xử lý hình ảnh và Giải mã-mã hóa Ops

Trước tiên, hãy nhập các gói và thư viện quan trọng. Xin lưu ý rằng các gói tenorflow và khoa học dữ liệu khác được cài đặt sẵn trong sổ ghi chép google colab

import tensorflow as tf
import matplotlib.pyplot as plt
import cv2

Đọc hình ảnh bằng opencv, trả về Image ndarray

img = cv2.imread['workplace.jpg']

Bây giờ, chúng ta sẽ sử dụng tf. hình ảnh. central_crop[] để cắt vùng trung tâm của hình ảnh. Thông số central_fraction được đặt thành 0. 7

________số 8

Đây là mã đầy đủ và hình ảnh đã cắt được hiển thị bên dưới

import matplotlib.pyplot as plt
img = cv2.imread['workplace.jpg']
cropped_img = tf.image.central_crop[img, central_fraction=0.7]
plt.imshow[cropped_img]

Sử dụng Opencv và Numpy để cắt Hình ảnh ở giữa

Trong phần này, chúng tôi sẽ sử dụng numpy để cắt hình ảnh từ trung tâm

from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
0

Đầu tiên đọc hình ảnh bằng opencv

from PIL import Image

# Given information
img = Image.open["image.jpg"]
width, height = 440, 190
x, y = 100, 20

# Select area to crop
area = [x, y, x+width, y+height]

# Crop, show, and save image
cropped_img = img.crop[area]
cropped_img.show[]
cropped_img.save["cropped_image.jpg"]
1

Sau đó tìm tọa độ của hình ảnh đã cắt, tôi. e. tọa độ x trái và phải, ở đây chúng tôi sẽ loại bỏ 30% còn lại từ bên trái và bên phải i. e. 15% [frac/2] từ mỗi bên

frac = 0.70

left = img.size[0]*[[1-frac]/2]
upper = img.size[1]*[[1-frac]/2]
right = img.size[0]-[[1-frac]/2]*img.size[0]
bottom = img.size[1]-[[1-frac]/2]*img.size[1]
0

Tiếp theo, chúng ta sẽ cắt mảng Hình ảnh như hình bên dưới để lấy 70% Hình ảnh được cắt từ vùng trung tâm

Chủ Đề