реклама
Бургер менюБургер меню

Инженер – Компьютерное зрение с OpenCV и Python: практическое руководство (страница 3)

18

# Загрузка изображения

img = cv2.imread('image.jpg')

# Резка изображения

crop_img = img[50:150, 50:150]

# Вывод резанного изображения

cv2.imshow('Crop Image', crop_img)

cv2.waitKey(0)

cv2.destroyAllWindows()

```

В этом примере мы выделили квадратную область размером 100x100 пикселей, начиная с точки (50, 50), и сохранили ее в переменной `crop_img`.

**Масштабирование изображений**

Масштабирование изображений – это процесс изменения размера изображения. Эта операция часто используется при обработке изображений, когда нам нужно изменить размер изображения для дальнейшей обработки или отображения.

В OpenCV масштабирование изображений можно осуществить с помощью функции `cv2.resize()`. Например, если у нас есть изображение `img` и мы хотим масштабировать его до размера 640x480 пикселей, мы можем сделать это следующим образом:

```python

import cv2

# Загрузка изображения

img = cv2.imread('image.jpg')

# Масштабирование изображения

resized_img = cv2.resize(img, (640, 480))

# Вывод масштабированного изображения

cv2.imshow('Resized Image', resized_img)

cv2.waitKey(0)

cv2.destroyAllWindows()

```

В этом примере мы масштабировали изображение до размера 640x480 пикселей и сохранили его в переменной `resized_img`.

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

Поворот изображений – это процесс изменения ориентации изображения. Эта операция часто используется при обработке изображений, когда нам нужно изменить ориентацию изображения для дальнейшей обработки или отображения.

В OpenCV поворот изображений можно осуществить с помощью функции `cv2.getRotationMatrix2D()` и `cv2.warpAffine()`. Например, если у нас есть изображение `img` и мы хотим повернуть его на 45 градусов, мы можем сделать это следующим образом:

```python

import cv2

import numpy as np

# Загрузка изображения

img = cv2.imread('image.jpg')

# Создание матрицы поворота

(h, w) = img.shape[:2]

(cX, cY) = (w // 2, h // 2)

M = cv2.getRotationMatrix2D((cX, cY), 45, 1.0)

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

rotated_img = cv2.warpAffine(img, M, (w, h))

# Вывод повернутого изображения

cv2.imshow('Rotated Image', rotated_img)

cv2.waitKey(0)

cv2.destroyAllWindows()

```

В этом примере мы повернули изображение на 45 градусов и сохранили его в переменной `rotated_img`.

В этой главе мы рассмотрели три фундаментальные операции с изображениями: резку, масштабирование и поворот. Эти операции часто используются при обработке изображений и являются основой для более сложных операций. В следующей главе мы рассмотрим более сложные операции с изображениями, такие как фильтрация и преобразование изображений.

2.3. Работа с цветовыми пространствами

В предыдущих главах мы уже познакомились с основными понятиями компьютерного зрения и научились работать с изображениями в OpenCV. Теперь давайте поговорим о цветовых пространствах, которые играют важную роль в обработке и анализе изображений.

**Что такое цветовое пространство?**

Цветовое пространство – это математическая модель, которая описывает способ представления цвета в цифровых изображениях. Цветовое пространство определяет, как цвета будут представлены в виде числовых значений, и как эти значения будут интерпретироваться компьютером.

**Основные цветовые пространства**

Существует несколько основных цветовых пространств, которые используются в компьютерном зрении:

* **RGB (Red, Green, Blue)**: Это наиболее распространенное цветовое пространство, в котором каждый пиксель изображения представлен тремя значениями: красным, зеленым и синим. Эти значения обычно представлены в виде 8-битных целых чисел, что позволяет представить 256 различных оттенков каждого цвета.

* **BGR (Blue, Green, Red)**: Это цветовое пространство аналогично RGB, но порядок цветов обратный. OpenCV по умолчанию использует цветовое пространство BGR.

* **HSV (Hue, Saturation, Value)**: Это цветовое пространство представляет цвета в виде трёх компонентов: оттенка (hue), насыщенности (saturation) и яркости (value). Это цветовое пространство часто используется для разделения объектов на изображении по цвету.

* **YCrCb (Luminance, Chrominance)**: Это цветовое пространство представляет цвета в виде яркости (luminance) и двух компонентов хроминанса (chrominance). Это цветовое пространство часто используется в видеокодировании.

**Преобразование между цветовыми пространствами**

OpenCV предоставляет функции для преобразования между различными цветовыми пространствами. Например, функция `cv2.cvtColor()` позволяет преобразовать изображение из одного цветового пространства в другое.

```python

import cv2

# Загрузка изображения

img = cv2.imread('image.jpg')

# Преобразование изображения в цветовое пространство HSV

hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# Преобразование изображения в цветовое пространство YCrCb