Hướng dẫn crop image using mask python - cắt hình ảnh bằng cách sử dụng mặt nạ python

Hãy bắt đầu bằng cách tải hình ảnh ngôi đền từ

from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
4:

Show
from sklearn.datasets import load_sample_images

dataset = load_sample_images()     
temple = dataset.images[0]
plt.imshow(temple)

Hướng dẫn crop image using mask python - cắt hình ảnh bằng cách sử dụng mặt nạ python

Vì, chúng ta cần sử dụng hình ảnh thứ hai làm mặt nạ, chúng ta phải thực hiện một thao tác ngưỡng nhị phân. Điều này sẽ tạo ra một hình ảnh đeo mặt nạ đen và trắng, sau đó chúng ta có thể sử dụng để che dấu hình ảnh cũ.

from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)

Bây giờ chúng ta có thể cắt hình ảnh để kích thước của nó tương thích với hình ảnh ngôi đền:

temple_x, temple_y, _ = temple.shape
heart_x, heart_y = mask.shape

x_heart = min(temple_x, heart_x)
x_half_heart = mask.shape[0]//2

heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
plt.imshow(heart_mask, cmap='Greys_r')

Hướng dẫn crop image using mask python - cắt hình ảnh bằng cách sử dụng mặt nạ python

Bây giờ chúng ta phải cắt hình ảnh mà chúng ta muốn che giấu, để phù hợp với kích thước của mặt nạ thực tế. Một hình dạng khác sẽ là thay đổi kích thước mặt nạ, điều này có thể thực hiện được, nhưng sau đó chúng tôi sẽ kết thúc với một hình ảnh trái tim bị bóp méo. Để áp dụng mặt nạ, chúng tôi có

from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
5:

temple_width_half = temple.shape[1]//2
temple_to_mask = temple[:,temple_width_half-x_half_heart:temple_width_half+x_half_heart]
masked = cv2.bitwise_and(temple_to_mask,temple_to_mask,mask = heart_mask)
plt.imshow(masked)

Hướng dẫn crop image using mask python - cắt hình ảnh bằng cách sử dụng mặt nạ python

Nếu bạn muốn thay vào đó làm cho vùng đeo mặt nạ (đen) trong suốt:

tmp = cv2.cvtColor(masked, cv2.COLOR_BGR2GRAY)
_,alpha = cv2.threshold(tmp,0,255,cv2.THRESH_BINARY)
b, g, r = cv2.split(masked)
rgba = [b,g,r, alpha]
masked_tr = cv2.merge(rgba,4)

plt.axis('off')
plt.imshow(dst)

Hướng dẫn crop image using mask python - cắt hình ảnh bằng cách sử dụng mặt nạ python

Hình ảnh cắt xén là gì?

Cắt hình ảnh là một cách chỉnh sửa ảnh liên quan đến việc loại bỏ một phần của hình ảnh để nhấn mạnh một chủ đề, thay đổi tỷ lệ khung hình hoặc cải thiện khung. Sau đó, bạn có thể điều chỉnh lại một đối tượng hoặc hướng sự chú ý của người xem đến một phần nhất định của ảnh. Xây dựng hình ảnh tự động thực hiện cùng một nhiệm vụ trên một số lượng lớn hình ảnh.

Dưới đây là các thuật ngữ chính liên quan đến việc cắt hình ảnh:

  • Hình chữ nhật trồng trọt - Vùng, được xác định bởi bốn tọa độ, để cắt hình ảnh. Hoạt động cắt xén loại bỏ tất cả các chi tiết bên ngoài hình chữ nhật của cây trồng, cung cấp một hình ảnh được sửa đổi về kích thước hình chữ nhật của cây trồng.— The region, defined by four coordinates, to which to crop the image. The cropping operation removes all the details outside the crop rectangle, delivering a modified image of the crop rectangle’s size.
  • Tỷ lệ khung hình - tỷ lệ của chiều rộng hình ảnh trên chiều cao của nó. Tỷ lệ này được biểu thị bằng hai số được phân tách bằng một đại tràng, ví dụ, 4: 3 hoặc bốn đến ba.— The ratio of the image’s width to its height. This ratio is denoted by two numbers separated by a colon, for example, 4:3 or four-to-three.
  • Pixels - Lưới của các pixel dọc và ngang trong đó các bức ảnh kỹ thuật số được sáng tác. Cắt xén ra một số phần nhất định của hình ảnh, giảm số lượng pixel và thu hẹp kích thước hình ảnh.— The grid of vertical and horizontal pixels of which digital photos are composed. Cropping cuts out certain sections of the image, reducing the number of pixels and shrinking the image size.

Bài viết này bao gồm các chủ đề sau:

  • Hình ảnh cắt xén trong Python với gối
  • Hình ảnh cắt xén bằng python với opencv
  • Thay đổi kích thước và cắt hình ảnh python thông qua tự động hóa với đám mây

Cách cắt hình ảnh trong Python với gối

Một ngã ba của Thư viện hình ảnh Python (PIL), Thư viện Gối cung cấp một cách dễ dàng thông qua chức năng

from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
6 để cắt hình ảnh trong Python. Ở đây, cú pháp:

Image.crop(box=None)

Tham số

from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
7 chấp nhận một tuple với bốn giá trị của bốn tọa độ cho hình chữ nhật cây trồng: trái, trên, phải và dưới. Hình chữ nhật cây trồng được vẽ trong hình ảnh, mô tả một phần của hình ảnh bạn muốn cắt.
from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
8 Trả về một đối tượng
from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
9.

Để cắt một hình ảnh với gối:

  1. Nhập Pillow Lớp hình ảnh:
    from PIL import Image
  2. Tải một hình ảnh từ hệ thống tệp và, với lớp
    temple_x, temple_y, _ = temple.shape
    heart_x, heart_y = mask.shape
    
    x_heart = min(temple_x, heart_x)
    x_half_heart = mask.shape[0]//2
    
    heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
    plt.imshow(heart_mask, cmap='Greys_r')
    
    0, chuyển đổi hình ảnh thành một thể hiện của lớp
    temple_x, temple_y, _ = temple.shape
    heart_x, heart_y = mask.shape
    
    x_heart = min(temple_x, heart_x)
    x_half_heart = mask.shape[0]//2
    
    heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
    plt.imshow(heart_mask, cmap='Greys_r')
    
    1. Thêm
    temple_x, temple_y, _ = temple.shape
    heart_x, heart_y = mask.shape
    
    x_heart = min(temple_x, heart_x)
    x_half_heart = mask.shape[0]//2
    
    heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
    plt.imshow(heart_mask, cmap='Greys_r')
    
    2 hiển thị hình ảnh trong trình xem bên ngoài.
    img = Image.open('./myimage.png')
    img.show()
  3. Cắt hình ảnh. Giả sử rằng & nbsp; Hình ảnh
    temple_x, temple_y, _ = temple.shape
    heart_x, heart_y = mask.shape
    
    x_heart = min(temple_x, heart_x)
    x_half_heart = mask.shape[0]//2
    
    heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
    plt.imshow(heart_mask, cmap='Greys_r')
    
    3 là 1.000 × 1.000 pixel, cắt nó thành một hình vuông 500 × 500 pixel ở trung tâm của hình ảnh:
    box = (250, 250, 750, 750)
    img2 = img.crop(box)
  4. Lưu hình ảnh bị cắt, một đối tượng Python được gọi là
    temple_x, temple_y, _ = temple.shape
    heart_x, heart_y = mask.shape
    
    x_heart = min(temple_x, heart_x)
    x_half_heart = mask.shape[0]//2
    
    heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
    plt.imshow(heart_mask, cmap='Greys_r')
    
    4, vào hệ thống tệp:
    img2.save('myimage_cropped.jpg')
    img2.show()

Lưu ý các vấn đề sau đây là hình ảnh cắt xén với gối:

  • Nội dung-nhận biết cắt xén. Hầu hết các hoạt động cắt xén phụ thuộc vào bối cảnh. Ví dụ, bạn không muốn loại bỏ các phần quan trọng của hình ảnh, nhưng điều đó khó đảm bảo theo chương trình vì hàm crop () không nhạy cảm với nội dung hình ảnh. Most cropping operations depend on the context. For example, you don’t want to remove important parts of the image, but that’s difficult to ensure programmatically because the crop() function is not sensitive to the image content.
  • Cắt xén và thay đổi kích thước. Thông thường, bạn phải thay đổi kích thước và cắt một hình ảnh cùng một lúc. Mặc dù bạn có thể thay đổi kích thước hình ảnh trong Python với một kỹ thuật tương tự, kết hợp cắt xén và thay đổi kích thước có thể trở nên khó khăn, chứ đừng nói đến việc nó thách thức để tạo ra hình ảnh chính xác bạn cần cho thiết kế của mình. Oftentimes, you must resize and crop an image at the same time. Even though you can resize images in Python with a similar technique, combining cropping and resizing can get tricky, let alone that it’s challenging to generate the exact image you need for your design.
  • Quản lý hình ảnh. Một số lượng lớn các hoạt động cây trồng có thể dẫn đến nhiều phiên bản cho mỗi hình ảnh, tất cả sẽ được lưu trữ trên máy chủ. Bên cạnh việc mua thêm không gian lưu trữ, bạn cũng phải đưa ra một quy ước rõ ràng, nhất quán để tạo điều kiện xác định vị trí đúng phiên bản của hình ảnh. Một cách tiếp cận hiệu quả hơn nhiều là chỉ đơn giản là tạo tự động phiên bản cần thiết của hình ảnh mà không lưu tất cả các phiên bản của nó vào hệ thống tệp. A large number of crop operations might lead to multiple versions for each image, all to be stored on the server. Besides procuring extra storage space, you must also put in place a clear, consistent convention to facilitate locating the right version of the image. A much more efficient approach is to simply dynamically generate the required version of the image without saving all its versions to the file system.

Cắt một hình ảnh bằng python với opencv

Python OpenCV là một thư viện có khả năng xác nhận máy tính tiên tiến, đặc biệt là một tập hợp các chức năng để xử lý xử lý và chuyển đổi hình ảnh. Để nhập thư viện OpenCV vào chương trình của bạn, hãy nhập:

from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
0

Ở đây, cú pháp để cắt hình ảnh:

from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
1

Điều thú vị là, cú pháp này cắt

temple_x, temple_y, _ = temple.shape
heart_x, heart_y = mask.shape

x_heart = min(temple_x, heart_x)
x_half_heart = mask.shape[0]//2

heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
plt.imshow(heart_mask, cmap='Greys_r')
5 dưới dạng một mảng bằng cách chuyển tọa độ chỉ số X và Y bắt đầu và kết thúc cho từng phân đoạn. Phần của hình ảnh giữa tọa độ bắt đầu và kết thúc được trả về dưới dạng một đối tượng mảng bị cắt ngắn.

Ví dụ:

from matplotlib.pyplot import imread

heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE)
_, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY)
2

Tuyên bố

temple_x, temple_y, _ = temple.shape
heart_x, heart_y = mask.shape

x_heart = min(temple_x, heart_x)
x_half_heart = mask.shape[0]//2

heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
plt.imshow(heart_mask, cmap='Greys_r')
6 mở hình ảnh ở chế độ chỉ đọc. Hàm
temple_x, temple_y, _ = temple.shape
heart_x, heart_y = mask.shape

x_heart = min(temple_x, heart_x)
x_half_heart = mask.shape[0]//2

heart_mask = mask[x_half_heart-x_heart//2 : x_half_heart+x_heart//2+1, :temple_y]
plt.imshow(heart_mask, cmap='Greys_r')
7 gần phía dưới hiển thị hình ảnh bị cắt.

Thay đổi kích thước và cắt hình ảnh python thông qua tự động hóa với đám mâyMột dịch vụ dựa trên đám mây để quản lý hình ảnh và video, Cloudinary cung cấp gói đăng ký chuyển đổi miễn phí hào phóng. Trong khi trên nền tảng đó, bạn có thể tải lên hình ảnh của mình, áp dụng các hiệu ứng tích hợp, bộ lọc và sửa đổi.Bạn cũng có thể thay đổi kích thước hình ảnh thông qua tự động hóa, tập trung vào các yếu tố quan trọng nhất với AI hoặc điều chỉnh chúng với thiết kế trang web của bạn bằng cách chỉ định tỷ lệ chiều rộng, chiều cao và khung hình là vòng loại cho các trường hợp hình ảnh mới. Cloudinary sau đó tự động thực hiện các nhiệm vụ thay đổi kích thước và cắt xén để đáp ứng các tiêu chí. Không có nỗ lực thủ công được yêu cầu.Chụp ảnh 1.200 × 1.200 pixel này: Thay đổi kích thước nó thành 200 × 200 pixel với kết quả của cây trồng, tỷ lệ, lấp đầy và pad trong các hình ảnh sau:Ảnh gốc (adsbygoogle = window.adsbygoogle || []).push({}); Tập trung vào mô hình trong cây trồng chân dungPhát hiện khuôn mặt cho cây thu nhỏTự động xác định những gì cần giữ trong một loại cây BannerĐể tự động hóa kích thước hình ảnh và cắt xén trên đám mây:Đăng ký một tài khoản đám mây miễn phí.Cài đặt SDK Python.Đặt tiêu chí chuyển đổi cho các ví dụ trên: from matplotlib.pyplot import imread heart = imread(r'path_to_im\heart.jpg', cv2.IMREAD_GRAYSCALE) _, mask = cv2.threshold(heart, thresh=180, maxval=255, type=cv2.THRESH_BINARY) 3

Làm thế nào để bạn cắt một hình ảnh trong một mặt nạ trong Python?

Để mã hoạt động, mảng hình ảnh phải nằm trong phạm vi 0-255 và mảng mặt nạ phải ở nhị phân (0 hoặc 1). Trong mảng mặt nạ, diện tích râu phải có giá trị pixel là 1 và phần còn lại 0, để nhân hình ảnh với mặt nạ sẽ cung cấp cho hình ảnh mong muốn như hình trên.the image array must be in range 0-255 and the mask array must be in binary (either 0 or 1). In the mask array, the area of beard must have pixel value of 1 and the rest 0, so that multiplying the image with the mask will give the desired image as shown above.

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

Trong Python, bạn cắt hình ảnh bằng phương pháp tương tự như cắt mảng numpy. Để cắt một mảng, bạn cần chỉ định chỉ số bắt đầu và kết thúc của kích thước thứ nhất cũng như kích thước thứ hai. Kích thước đầu tiên luôn là số lượng hàng hoặc chiều cao của hình ảnh.using the same method as NumPy array slicing. To slice an array, you need to specify the start and end index of the first as well as the second dimension. The first dimension is always the number of rows or the height of the image.

Chúng ta có thể cắt hình ảnh trong Python không?

Làm thế nào để cắt hình ảnh trong Python với gối.Tham số hộp chấp nhận một tuple với bốn giá trị của bốn tọa độ cho hình chữ nhật cây trồng: trái, trên, phải và dưới.Hình chữ nhật cây trồng được vẽ trong hình ảnh, mô tả một phần của hình ảnh bạn muốn cắt.The box parameter accepts a tuple with four values of the four coordinates for the crop rectangle: left, upper, right, and lower. The crop rectangle is drawn within the image, which depicts the part of the image you want to crop.

Làm cách nào để cắt một hình ảnh trong opencv?

Để cắt một hình ảnh đến một khu vực nhất định bằng openCV, hãy sử dụng cắt lát numpy IMG [y: y++chiều rộng, x: x+chiều rộng] với điểm bắt đầu (x, y)) Điểm kết thúc ở phía dưới bên phải.Hai điểm đó xác định rõ ràng hình chữ nhật sẽ bị cắt.use NumPy slicing img[y:y+height, x:x+width] with the (x, y) starting point on the upper left and (x+width, y+height) ending point on the lower right. Those two points unambiguously define the rectangle to be cropped.