Open In App

Splitting and Merging Channels with Python-OpenCV

Last Updated : 03 Jan, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will learn how to split a multi-channel image into separate channels and combine those separate channels into a multi-channel image using OpenCV in Python. 

To do this, we use cv2.split() and cv2.merge() functions respectively. 

Image Used:

Splitting Channels

cv2.split() is used to split coloured/multi-channel image into separate single-channel images. The cv2.split() is an expensive operation in terms of performance(time). The order of the output vector of arrays depends on the order of channels of the input image.

Syntax: cv2.split(m[, mv])

Parameters:

  • m: Input multi-channel array
  • mv: Output vector of arrays

Example:

Python3




# Python program to explain splitting of channels
  
# Importing cv2
import cv2 
  
# Reading the image using imread() function
image = cv2.imread('img.jpg')
  
# Displaying the original BGR image
cv2.imshow('Original_Image', image)
  
# Using cv2.split() to split channels of coloured image 
b,g,r = cv2.split(image)
  
# Displaying Blue channel image
# Blue colour is highlighted the most
cv2.imshow("Model Blue Image", b)
  
# Displaying Green channel image
# Green colour is highlighted the most
cv2.imshow("Model Green Image", g)
  
# Displaying Red channel image
# Red colour is highlighted the most
cv2.imshow("Model Red Image", r)
  
# Waits for user to press any key
cv2.waitKey(0)


Output:

Merging Channels

cv2.merge() is used to merge several single-channel images into a colored/multi-channel image.

Syntax: cv2.merge(mv[, dst])

Parameters:

  • mv: Input vector of matrices to be merged. All matrices must have same size.
  • dst: Output multi-channel array of size mv[0]. Number of channel will be equal to total no. of channel in matrix array.

Example: 

Python3




# Python program to explain Merging of Channels
  
# Importing cv2
import cv2
  
# Reading the BGR image using imread() function
image = cv2.imread("img.jpg")
  
# Splitting the channels first to generate different 
# single
  
# channels for merging as we don't have separate
# channel images
b, g, r = cv2.split(image)
  
# Displaying Blue channel image
cv2.imshow("Model Blue Image", b)
  
# Displaying Green channel image
cv2.imshow("Model Green Image", g)
  
# Displaying Red channel image
cv2.imshow("Model Red Image", r)
  
# Using cv2.merge() to merge Red, Green, Blue Channels
  
# into a coloured/multi-channeled image
image_merge = cv2.merge([r, g, b])
  
# Displaying Merged RGB image
cv2.imshow("RGB_Image", image_merge)
  
# Waits for user to press any key
cv2.waitKey(0)


Output:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads