Введение
Добро пожаловать в этот туториал по OpenCV-Python! В этом туториале будут рассмотрены некоторые базовые операции с изображениями с использованием библиотеки OpenCV в Python.
Добро пожаловать в этот туториал по OpenCV-Python! В этом туториале будут рассмотрены некоторые базовые операции с изображениями с использованием библиотеки OpenCV в Python.
Прежде чем начать эту лабораторию, участники должны открыть Python Shell в терминале в /home/labex/project
cd /home/labex/project
python3
Сначала давайте начнем с загрузки изображения и его отображения с использованием OpenCV:
import cv2
## Загрузить изображение
image = cv2.imread('image.jpg')
## Отобразить изображение
cv2.imwrite('Original Image.jpg', image)
Для доступа к значению пикселя достаточно указать его координаты (x, y) следующим образом:
pixel_value = image[y, x]
Значение пикселя представляет собой массив, содержащий цветовые каналы (B, G, R). Чтобы изменить значение пикселя, просто присвойте новое значение соответствующим координатам.
Вот пример, как установить пиксель [0:9, 0:9] в красный цвет:
for x in range(10):
for y in range(10):
image[x, y] = [0, 0, 255] ## Установить пиксель в красный
cv2.imwrite('Modified Image.jpg', image)
Оригинальное изображение выглядит так:

Изображение после изменения значений пикселей в диапазоне [0:9,0:9]:

Пользователи могут проверить правильность результата, запустив код ниже.
Свойства изображения включают количество строк, столбцов и каналов, а также тип данных изображения и общее количество пикселей.
Для доступа к размеру изображения (строки, столбцы и каналы) используйте атрибут shape:
height, width, channels = image.shape
print(height, width, channels)
## вывод
## 360 640 3
Для доступа к общему количеству пикселей используйте атрибут size:
total_pixels = image.size
print(total_pixels)
## вывод
## 691200
Для доступа к типу данных изображения используйте атрибут dtype:
image_dtype = image.dtype
print(image_dtype)
## вывод
## uint8
Область интереса (ROI) — это подизображение, которое мы можем извлечь из исходного изображения. Чтобы установить ROI, нам достаточно указать начальные и конечные координаты.
roi = image[start_y:end_y, start_x:end_x]
Например, чтобы извлечь ROI размером 100x100 пикселей из верхнего левого угла, мы можем сделать следующее:
roi = image[0:100, 0:100]
cv2.imwrite('ROI.jpg', roi)
Генерируемое изображение ROI.jpg выглядит так:

Для разделения изображения на свои цветовые каналы (B, G, R) используйте функцию cv2.split():
b, g, r = cv2.split(image)
Теперь мы можем отобразить отдельные каналы с использованием cv2.imwrite().
Для объединения каналов обратно в одно изображение используйте функцию cv2.merge():
merged_image = cv2.merge((b, g, r))
Например, чтобы поменять местами красный и синий каналы, мы можем сделать следующее:
swapped_image = cv2.merge((r, g, b))
cv2.imwrite('Swapped Channels Image.jpg', swapped_image)
Генерируемое изображение Swapped Channels Image.jpg выглядит так:

Вот и все! Вы узнали некоторые базовые операции с изображениями с использованием OpenCV-Python. Эти важные концепции помогут понять, как работать с изображениями в компьютерном зрении и при обработке изображений. Освоив эти базовые операции, вы сможете успешно приступить к разработке более сложных алгоритмов обработки изображений.