Чтобы удалить черные рамки слева и справа от изображения с помощью Python, можно использовать несколько методов. Вот несколько подходов:
-
OpenCV:
Вы можете использовать библиотеку OpenCV, чтобы обрезать черные границы. Вот пример фрагмента кода:import cv2 def remove_black_borders(image_path): image = cv2.imread(image_path) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) _, thresh = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY) contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) x, y, w, h = cv2.boundingRect(contours[0]) cropped_image = image[y:y + h, x:x + w] return cropped_image # Usage example cropped_image = remove_black_borders("image.jpg") cv2.imshow("Cropped Image", cropped_image) cv2.waitKey(0) cv2.destroyAllWindows() -
PIL (библиотека изображений Python):
Библиотека PIL предоставляет различные функции манипулирования изображениями. Вот пример использования PIL:from PIL import Image def remove_black_borders(image_path): image = Image.open(image_path) image_data = image.getdata() image_without_borders = image.crop(image.getbbox()) return image_without_borders # Usage example cropped_image = remove_black_borders("image.jpg") cropped_image.show() -
NumPy:
NumPy — мощная библиотека для числовых вычислений, включая обработку изображений. Вот пример использования NumPy:import numpy as np from PIL import Image def remove_black_borders(image_path): image = Image.open(image_path) image_data = np.array(image) non_black_pixels = np.where(image_data.min(axis=2) != 0) bbox = np.min(non_black_pixels[0]), np.min(non_black_pixels[1]), np.max(non_black_pixels[0]), np.max( non_black_pixels[1]) cropped_image = image.crop(bbox) return cropped_image # Usage example cropped_image = remove_black_borders("image.jpg") cropped_image.show()