This is an improvement in AkiRoss's answer. This gives you more flexibility in how you show and avoid repeating a function for each row, displaying it in a grid format.
import matplotlib.pyplot as plt def grid_display(list_of_images, list_of_titles=[], no_of_columns=2, figsize=(10,10)): fig = plt.figure(figsize=figsize) column = 0 for i in range(len(list_of_images)): column += 1
Options:
list_of_images - a list containing all the images you want to display.list_of_titles - a list containing all the image headers in the same order.no_of_columns - the number of columns in the grid.figsize - the size of each line to prevent crushing. (horizontal_size, vertical_size) .
Example:
import cv2 import matplotlib.pyplot as plt img = cv2.imread("files/tiger_monkey.jpg") grey_img = cv2.imread("files/tiger_monkey_grey.png") img_b, img_g, img_r = cv2.split(img) grey_img_b, grey_img_g, grey_img_r = cv2.split(grey_img) combi_one = cv2.merge((img_b, grey_img_g, img_r)) combi_two = cv2.merge((grey_img_b, grey_img_g, img_r)) combi_three = cv2.merge((img_b, img_g, grey_img_r)) combi_four = cv2.merge((grey_img_b, img_g, img_r)) combi_five = cv2.merge((grey_img_b, img_g, grey_img_r)) combi_six = cv2.merge((img_b, grey_img_g, grey_img_r)) titles = ["combi_one", "combi_two", "combi_three", "combi_four", "combi_five", "combi_six"] images = [combi_one, combi_two, combi_three, combi_four, combi_five, combi_six] images = [cv2.cvtColor(image, cv2.COLOR_BGR2RGB) for image in images] grid_display(images, titles, 3, (10,10))

Original Images:
Zadiq source share