Trong OpenCV, hình ảnh chỉ đơn giản là mảng Numpy. Vì vậy, chúng tôi có thể sử dụng kỹ thuật cắt mảng Numpy để cắt hình ảnh và xóa phần mà chúng tôi không quan tâm
Hình ảnh bên dưới sẽ được sử dụng làm ví dụ xuyên suốt hướng dẫn này
Bài viết này là phần 4 của loạt bài hướng dẫn về thị giác máy tính và xử lý ảnh với OpenCV
được tài trợ
Kích thước đầu tiên của mảng Numpy đại diện cho các hàng của mảng [là chiều cao của hình ảnh hoặc tọa độ y] và kích thước thứ hai đại diện cho các cột của mảng [là chiều rộng của hình ảnh hoặc tọa độ x
Vì vậy, để cắt một hình ảnh, chúng ta có thể sử dụng cú pháp sau
cropped_img = img[y_start:y_end, x_start:x_end]
Hãy đi thẳng vào một ví dụ để bạn không bị lạc
import cv2
# read the image
image = cv2.imread["image.jpg"]
cropped_img = image[50:200, 100:400]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
Khi cắt một mảng Numpy, chúng ta bắt đầu với chiều cao [các hàng của mảng] và sau đó là chiều rộng [các cột của mảng]
Hãy xem hình ảnh bên dưới để xem khu vực chúng tôi sẽ giữ lại sau khi cắt xén. Hình ảnh cũng cho chúng ta biết tọa độ sẽ được sử dụng để cắt
Đây là kết quả
Hãy xem một ví dụ khác
image = cv2.imread["image.jpg"]
cropped_img = image[30:350, 270:450]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
Một lần nữa, đây là tọa độ và khu vực mà chúng tôi sẽ giữ lại sau khi cắt xén
và đây là ảnh đã crop
Đây là ví dụ cuối cùng về việc cắt xén sẽ chỉ giữ lại vùng hoa
image = cv2.imread["image.jpg"]
cropped_img = image[30:365, 104:450]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
Tôi nghĩ rằng tôi đã bao gồm đủ ví dụ để bạn không bị lạc. Hy vọng với những ví dụ này, bạn sẽ hiểu rõ hơn về cách hoạt động của crop
được tài trợ
Cắt xén là một thao tác xử lý ảnh quan trọng và cũng rất đơn giản để sử dụng. Có thể bạn có thể nhầm lẫn với điểm bắt đầu và điểm kết thúc của việc cắt hoặc bạn có thể đảo ngược tọa độ x và y nhưng với một số thực hành, điều này sẽ trở nên tự nhiên
Nếu bạn muốn tìm hiểu thêm về thị giác máy tính và xử lý hình ảnh, hãy xem khóa học của tôi Thị giác máy tính và xử lý hình ảnh với OpenCV và Python
Nếu bạn cần trợ giúp, đừng ngần ngại hỏi trong phần bình luận. Ngoài ra, đừng quên đăng ký danh sách gửi thư để không bỏ lỡ bất kỳ bài viết tiếp theo nào
Cảm ơn bạn đã ghé thăm website của chúng tôi. Chúng tôi sử dụng các cookie thiết yếu để giúp chúng tôi hiểu và nâng cao trải nghiệm người dùng. Bằng cách nhấp vào “Chấp nhận”, bạn đồng ý với việc sử dụng TẤT CẢ các cookie
Chấp nhận Chính sách bảo mậtThư viện xử lý ảnh Gối [PIL] của Python cung cấp
image = cv2.imread["image.jpg"]
cropped_img = image[30:350, 270:450]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
6 để cắt bỏ một phần diện tích của ảnhBài viết này mô tả các nội dung sau với mã mẫu
- cây trồng bình thường
- Chỉ định khu vực bên ngoài
- Cắt trung tâm của hình ảnh
- Cắt hình vuông lớn nhất từ hình chữ nhật
Vui lòng xem bài viết sau để biết cách cài đặt và sử dụng cơ bản Gối [PIL]
- Cách sử dụng Gối [PIL. Thư viện hình ảnh Python]
Sử dụng
image = cv2.imread["image.jpg"]
cropped_img = image[30:350, 270:450]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
7 để thay đổi kích thước toàn bộ hình ảnh thay vì cắt bỏ một phần của hình ảnh và sử dụng im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
0 để tạo hình ảnh trong suốt bằng cách cắt bỏ một hình dạng không phải hình chữ nhật [chẳng hạn như hình tròn]- Thay đổi kích thước hình ảnh bằng Python, Gối
- Tạo ảnh png trong suốt với Python, Gối [putalpha]
Sử dụng cắt để cắt hình ảnh được đại diện bởi mảng NumPy
im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
1- Xử lý ảnh với Python, NumPy
Nhập
im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
2 từ im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
3 và mở hình ảnh mục tiêu________số 8
nguồn.
Liên kết được tài trợ
cây trồng bình thường
Đặt vùng cắt xén với
im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
4Tọa độ trên cùng bên trái tương ứng với ________ 45 và tọa độ dưới cùng bên phải tương ứng với ________ 46. Khu vực được cắt xén là
im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
7 và im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
8, không bao gồm các điểm ảnh của im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
9 vàimport cv2
# read the image
image = cv2.imread["image.jpg"]
cropped_img = image[50:200, 100:400]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
50Hãy cẩn thận đừng quên rằng
import cv2
# read the image
image = cv2.imread["image.jpg"]
cropped_img = image[50:200, 100:400]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
51 yêu cầu import cv2
# read the image
image = cv2.imread["image.jpg"]
cropped_img = image[50:200, 100:400]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
52im_crop = im.crop[[60, 20, 400, 200]]
im_crop.save['data/dst/astronaut_pillow_crop.jpg', quality=95]
nguồn.
Nếu bạn chỉ muốn lưu ảnh đã cắt mà không sử dụng cho các thao tác khác, bạn có thể viết trong một dòng
import cv2
# read the image
image = cv2.imread["image.jpg"]
cropped_img = image[50:200, 100:400]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
5nguồn.
Chỉ định khu vực bên ngoài
Ngay cả khi phần bên ngoài của hình ảnh được đặt trong vùng cắt xén, lỗi vẫn không xuất hiện và hình ảnh được hiển thị bằng màu đen
image = cv2.imread["image.jpg"]
cropped_img = image[30:350, 270:450]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
0nguồn.
Liên kết được tài trợ
Cắt trung tâm của hình ảnh
Nếu bạn muốn cắt trung tâm của hình ảnh thành bất kỳ kích thước nào, thuận tiện để xác định chức năng sau
image = cv2.imread["image.jpg"]
cropped_img = image[30:350, 270:450]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
1nguồn.
Ví dụ sử dụng
image = cv2.imread["image.jpg"]
cropped_img = image[30:350, 270:450]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
2nguồn.
Cắt hình vuông lớn nhất từ hình chữ nhật
Khi tạo một hình ảnh thu nhỏ, bạn có thể cần phải cắt một hình vuông càng lớn càng tốt từ hình ảnh hình chữ nhật
Xác định hàm cắt một hình vuông có cạnh ngắn từ tâm của hình chữ nhật
Sử dụng thuộc tính
import cv2
# read the image
image = cv2.imread["image.jpg"]
cropped_img = image[50:200, 100:400]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
53 để lấy chiều cao và chiều rộng của hình ảnh và import cv2
# read the image
image = cv2.imread["image.jpg"]
cropped_img = image[50:200, 100:400]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
54 để lấy hình ảnh ngắn hơn. Hàm import cv2
# read the image
image = cv2.imread["image.jpg"]
cropped_img = image[50:200, 100:400]
cv2.imshow["Original image", image]
cv2.imshow["Cropped image", cropped_img]
cv2.waitKey[0]
cv2.destroyAllWindows[]
55 được xác định ở trên được sử dụng