Базовые операции с изображением в 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

Вырезание фрагмента

Поскольку в 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()

Результат выполнения:

Изображение кота для работы с OpenCV

Поворот изображения

Поворот изображения осуществляется следующим образом:

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()

Результат выполнения:

Изображение кота для работы с OpenCV

Сохранение

После всех операций, проделанных над изображением, его осталось лишь сохранить:

cv.imwrite("name_of_file.png", img)

Первым аргументом указываем папку, где сохраним файл с именем конечного файла. Второй аргумент — изображение, с которым работали.

Курсы Робикс, в которых изучается этот материал.

  1. Duckietown: робот с системой Автопилота
Сохраните или поделитесь
Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *