Этот кейс написан на основе версии opencv4.x
Кодовый адрес:GitHub.com/Гу Депэн/Body…
1. Каналы
Изображение может иметь n каналов, а n означает, что каждый пиксель изображения состоит из нескольких значений.Для N-канального изображения a×b матрица изображения фактически представляет собой цифровую матрицу с n строками b и столбцами a .
2. Цветовое пространство
Часто используемые цветовые пространства:
- фон: 3 канала
- серый: изображение в градациях серого, 1 канал
- bgra: 4 канала, последний канал — прозрачность
3. Преобразование цветового пространства
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cvtColor(src, code, dst=None, dstCn=None)
- src: объект изображения для преобразования
- код: тип преобразования
- dst: тип цветовой карты
- dstCn: количество выходных каналов, 0 — количество каналов для автоматического получения src
4. Разделить канал
img = cv2.imread("./img/opencv.jpg", cv2.IMREAD_COLOR)
(B, G, R) = cv2.split(img)
B1 = img[:, :, 0]
G1 = img[:, :, 1]
R1 = img[:, :, 2]
split(m, mv=None)
- m: изображение, которое нужно сегментировать
img[:, :, n]
- n: n-й канал
5. Объединить каналы
newimg = cv2.merge([B, G, R])
merge(mv, dst=None)
- mv: канал для слияния
6. Получить свойства изображения
(h, w, c) = img.shape
- h: высота изображения
- w: ширина изображения
- c: количество каналов изображения
7. Создайте матрицу
import numpy as np
zero = np.zeros(img.shape, dtype=np.uint8)
zeros(shape, dtype=None, order='C') создает матрицу со всеми нулями
one(shape, dtype=None, order='C') создает матрицу со всеми единицами
- shape: размер создаваемой матрицы
- dtype: тип значения матрицы
8. Копировать канал
cv2.mixChannels([img], [zero], [0, 0, 1, 1, 2, 2])
mixChannels(src, dst, fromTo)
- src: список объектов изображения для копирования каналов
- dst: список объектов изображения для копирования каналов
- fromTo: скопировать с какого канала на какой канал