Это мое понимание. В OpenCV функция split () примет входной сигнал с темпом изображения (будучи многоканальным массивом) и разделит его на несколько отдельных одноканальных массивов.
Внутри изображения каждый пиксель имеет пятно, последовательно расположенное в массиве, причем каждый пиксель имеет свой собственный массив для обозначения (r, g и b), следовательно, термина многоканальный. Эта настройка позволяет разделять изображения любого типа, такие как bgr, rgb или hsv, используя одну и ту же функцию.
В качестве примера (представьте, что это отдельные примеры, поэтому никакие переменные не перезаписываются)
b,g,r = cv2.split(bgrImage)
r,g,b = cv2.split(rgbImage)
h,s,v = cv2.split(hsvImage)
Например, b,g,r
arrayts. Каждый массив из одного канала содержит часть разделенного изображения RGB.
Это означает, что изображение разделяется на три отдельных массива:
rgbImage[0] = [234,28,19]
r[0] = 234
g[0] = 28
b[0] = 19
rgbImage[41] = [119,240,45]
r[41] = 119
g[14] = 240
b[14] = 45
Слияние делает обратное, беря несколько одноканальных массивов и объединяя их вместе:
newRGBImage = cv2.merge((r,g,b))
порядок, в котором пропущены разделенные каналы, становится важным с этой функцией.
КОД SUDO:
cv2.merge((r,g,b)) != cv2.merge((b,g,r))
В качестве отступления: Cv2.split () - дорогостоящая функция, и использование индексации numpy должно быть более эффективным.
Для получения дополнительной информации ознакомьтесь с opencv python учебными пособиями