Базовые операции с изображением в OpenCV
В OpenCV можно производить все стандартные операции над изображениями. В уроке рассмотрим эти базовые операции: получение и изменение размера, вырезание фрагмента, поворот и сохранение изображения.
Получение размера изображения
Функция возвращает три параметра: высоту, ширину (в пикселях) и количество каналов (количество координат цветового пространства):
img.shape
Изменение размера изображения
Эта функция в качестве аргументов принимает изображение и требуемый размер.
cv2.resize()
Также мы можем изменить размеры более тонко. Основой для изменений станут масштабы по горизонтальной и вертикальной осям. Можем использовать и метод интерполяции, который принимает следующие виды:
- inter_nearest — интерполяция ближайшего соседа
- inter_linear — билинейная интерполяция (используется по умолчанию)
- inter_area — передискретизация с использованием отношения площади пикселей
- inter_cubic — бикубическая интерполяция по окрестности 4 × 4 пикселей
- inter_lanczos4 — интерполяция Ланцоша по окрестности 8 × 8 пикселей
Рассмотрим пример, где мы учитываем соотношение сторон оригинального изображения:
import sys
import numpy as np
import cv2 as cv
fn = "KOT.jpg" # путь к файлу с картинкой
img = cv.imread(fn)
percent = 20
width = int(img.shape[1] * percent / 100)
height = int(img.shape[0] * percent / 100)
dim = (width, height)
img = cv.resize(img, dim)
cv.imshow('KOT', img) # выводим итоговое изображение в окно
cv.waitKey()
cv.destroyAllWindows()
Результат:
Вырезание фрагмента
Поскольку в OpenCV изображение является набором матриц, крайне легко делать «вырезку» из них. Вырежем сначала по высоте с 60 по 500 пиксели, а затем по ширине со 200 по 400:
import sys
import numpy as np
import cv2 as cv
fn = "KOT.jpg" # путь к файлу с картинкой
img = cv.imread(fn)
img = img[60:500, 200:400]
cv.imshow('KOT', img) # выводим итоговое изображение в окно
cv.waitKey()
cv.destroyAllWindows()
Результат выполнения:
Поворот изображения
Поворот изображения осуществляется следующим образом:
img = cv.rotate(img,rotateCode)
img — изображение, которое необходимо повернуть. rotateCode — код поворота, который может принимать такие значения:
- cv.rotate_90_clockwise — повороты на 90 градусов по по часовой стрелке,
- cv.rotate_90_counterclockwise — повороты на 90 градусов против часовой стрелки,
- cv.rotate_180 — поворот на 180 градусов.
Общий вид кода:
import sys
import numpy as np
import cv2 as cv
fn = "KOT.jpg" # путь к файлу с картинкой
img = cv.imread(fn)
img = cv.rotate(img, cv.ROTATE_180)
cv.imshow('KOT', img) # выводим итоговое изображение в окно
cv.waitKey()
cv.destroyAllWindows()
Результат выполнения:
Сохранение
После всех операций, проделанных над изображением, его осталось лишь сохранить:
cv.imwrite("name_of_file.png", img)
Первым аргументом указываем папку, где сохраним файл с именем конечного файла. Второй аргумент — изображение, с которым работали.
Добавить комментарий