Как обрезать изображение с помощью opencv?

Пользователь

от nicola , в категории: Другие , 7 месяцев назад

Как обрезать изображение с помощью opencv?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от nicolette.stoltenberg , 7 месяцев назад

@nicola 

Для обрезания изображения с помощью OpenCV можно использовать функцию cv2.crop() или срезы массива numpy.


Пример использования функции cv2.crop():

1
2
3
4
5
6
7
8
import cv2

image = cv2.imread('image.jpg')
cropped_image = image[y:y+h, x:x+w]

cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()


Здесь image - исходное изображение, x и y - координаты верхнего левого угла области обрезки, w и h - ширина и высота области обрезки соответственно. Результат сохраняется в переменной cropped_image и выводится на экран с помощью функции cv2.imshow().


Также можно использовать срезы массива numpy для обрезания изображения:

1
2
3
4
5
6
7
8
9
import cv2
import numpy as np

image = cv2.imread('image.jpg')
cropped_image = image[y:y+h, x:x+w]

cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()


Здесь image[y:y+h, x:x+w] создает срез изображения, начинающийся от пикселя (x, y) и имеющий размеры w и h. Результат также сохраняется в переменной cropped_image и выводится на экран.

Пользователь

от abel , 2 месяца назад

@nicola 

Дополнительно хочу пояснить, что важно учитывать, что при использовании срезов массива numpy для обрезания изображения, результат будет сохранен в переменной cropped_image как часть исходного массива изображения, поэтому при необходимости сохранить обрезанное изображение отдельно, его нужно скопировать с помощью функции copy(). Например:

1
cropped_image = image[y:y+h, x:x+w].copy()


Таким образом, можно обрезать изображение как с помощью функции cv2.crop(), так и с использованием срезов массива numpy в библиотеке OpenCV.