We display images to see what the computer is working on. It helps us check if the image is loaded or processed correctly.
Displaying images (cv2.imshow, matplotlib) in Computer Vision
Start learning this pattern below
Jump into concepts and practice - no test required
import cv2 cv2.imshow(window_name, image) cv2.waitKey(delay) cv2.destroyAllWindows() # or using matplotlib import matplotlib.pyplot as plt plt.imshow(image) plt.title('Title') plt.axis('off') plt.show()
cv2.imshow opens a new window to show the image. You must call cv2.waitKey() to display it properly.
matplotlib shows images inside notebooks or scripts and works well with color images if converted properly.
import cv2 image = cv2.imread('cat.jpg') cv2.imshow('Cat', image) cv2.waitKey(0) cv2.destroyAllWindows()
import matplotlib.pyplot as plt import cv2 image = cv2.imread('cat.jpg') image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) plt.imshow(image_rgb) plt.title('Cat Image') plt.axis('off') plt.show()
This program loads a sample image, shows it in a window for 1 second using OpenCV, then shows it again inside the script using matplotlib with correct colors.
import cv2 import matplotlib.pyplot as plt # Load image image = cv2.imread(cv2.samples.findFile('lena.jpg')) # Show with cv2.imshow cv2.imshow('Lena - OpenCV', image) cv2.waitKey(1000) # Show for 1 second cv2.destroyAllWindows() # Convert BGR to RGB for matplotlib image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # Show with matplotlib plt.imshow(image_rgb) plt.title('Lena - Matplotlib') plt.axis('off') plt.show()
OpenCV uses BGR color order, but matplotlib uses RGB. Convert colors to see correct colors in matplotlib.
cv2.imshow windows need cv2.waitKey() to display and respond to keyboard events.
matplotlib is better for showing images inside notebooks or scripts, while cv2.imshow is good for quick pop-up windows.
Use cv2.imshow to open a window showing the image; remember to call cv2.waitKey() and cv2.destroyAllWindows().
Use matplotlib.pyplot.imshow to display images inside notebooks or scripts, converting colors from BGR to RGB first.
Displaying images helps you check and understand your computer vision work visually.
Practice
cv2.imshow in computer vision?Solution
Step 1: Understand the function of cv2.imshow
cv2.imshowis used to open a new window that shows the image you provide.Step 2: Differentiate from other functions
Saving images usescv2.imwrite, color conversion usescv2.cvtColor, and resizing usescv2.resize.Final Answer:
To open a window that displays an image -> Option DQuick Check:
cv2.imshow shows images in a window [OK]
- Confusing cv2.imshow with saving or converting images
- Forgetting that cv2.imshow opens a separate window
- Thinking cv2.imshow changes image data
Solution
Step 1: Recall the correct order of OpenCV display functions
First,cv2.imshow()opens the image window, thencv2.waitKey()waits for a key press, and finallycv2.destroyAllWindows()closes the window.Step 2: Check the options order
Only cv2.imshow(), cv2.waitKey(), cv2.destroyAllWindows() follows this correct sequence.Final Answer:
cv2.imshow(), cv2.waitKey(), cv2.destroyAllWindows() -> Option AQuick Check:
Display, wait, then close windows [OK]
- Calling destroyAllWindows before waitKey
- Not calling waitKey causing window to close immediately
- Mixing order of functions
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('image.jpg')
plt.imshow(img)
plt.show()Solution
Step 1: Understand color format difference
OpenCV loads images in BGR format, but matplotlib expects RGB format.Step 2: Effect on plt.imshow
Displaying BGR image directly with plt.imshow causes colors to appear swapped, especially red and blue.Final Answer:
The image displays but colors look incorrect (blue and red swapped) -> Option BQuick Check:
OpenCV BGR images show wrong colors in matplotlib [OK]
- Assuming plt.imshow shows correct colors without conversion
- Confusing BGR and RGB formats
- Expecting plt.imshow to throw error on BGR images
import cv2
img = cv2.imread('photo.png')
cv2.imshow('Photo', img)
cv2.destroyAllWindows()Solution
Step 1: Identify missing waitKey()
Withoutcv2.waitKey(), the window opens and closes immediately because the program does not wait for a key press.Step 2: Confirm other options are incorrect
Destroying windows before showing is wrong, cv2.imread supports PNG, and window names can be any string.Final Answer:
Missing cv2.waitKey() call after cv2.imshow() -> Option AQuick Check:
Always call waitKey to pause window [OK]
- Forgetting waitKey causes window to close instantly
- Thinking destroyAllWindows controls window display timing
- Assuming cv2.imread can't read PNG images
Solution
Step 1: Understand color format for matplotlib display
OpenCV loads images in BGR format, but matplotlib expects RGB, so conversion is needed.Step 2: Check each option
import cv2 import matplotlib.pyplot as plt img = cv2.imread('img.jpg') plt.imshow(img) plt.show() misses color conversion, so colors will be wrong. import cv2 import matplotlib.pyplot as plt img = cv2.imread('img.jpg') img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img_rgb) plt.show() converts BGR to RGB correctly before display. import matplotlib.pyplot as plt img = cv2.imread('img.jpg') plt.imshow(img) plt.show() misses cv2 import (NameError) and color conversion. import cv2 img = cv2.imread('img.jpg') cv2.imshow('Image', img) cv2.waitKey(0) cv2.destroyAllWindows() uses cv2.imshow which opens a separate window, not inside notebook.Final Answer:
correctly converts BGR to RGB and displays image inside notebook -> Option CQuick Check:
Convert BGR to RGB before matplotlib display [OK]
- Skipping color conversion causing wrong colors
- Using cv2.imshow inside notebooks expecting inline display
- Assuming plt.imread always works for all image types
