0
0
Computer Visionml~8 mins

Displaying images (cv2.imshow, matplotlib) in Computer Vision - Model Metrics & Evaluation

Choose your learning style9 modes available
Metrics & Evaluation - Displaying images (cv2.imshow, matplotlib)
Which metric matters for displaying images and WHY

When showing images using cv2.imshow or matplotlib, the key metric is image clarity and correctness. This means the image should appear as expected without distortion, correct colors, and proper size. Since this is about visualization, metrics like accuracy or precision do not apply. Instead, the focus is on visual correctness to ensure the image data is displayed properly for human interpretation.

Confusion matrix or equivalent visualization

For image display, there is no confusion matrix. Instead, we can think of a simple checklist to verify the display:

    +-------------------------+
    | Image Display Checklist  |
    +-------------------------+
    | 1. Image loaded correctly |
    | 2. Color channels right  |
    | 3. Image size correct    |
    | 4. Window opens properly |
    | 5. Image updates if needed|
    +-------------------------+
    

If any of these fail, the image may not show correctly.

Tradeoff: cv2.imshow vs matplotlib.pyplot.imshow

cv2.imshow is fast and simple for quick image display in OpenCV workflows. It opens a separate window and is good for real-time updates.

matplotlib.pyplot.imshow is more flexible for plotting images inside notebooks or scripts with titles, axes, and color maps. It is slower but better for detailed visualization.

Tradeoff example:

  • If you want to quickly check frames from a video, use cv2.imshow.
  • If you want to show images with labels or multiple images in one figure, use matplotlib.pyplot.imshow.
What "good" vs "bad" image display looks like

Good display:

  • Image window opens without error.
  • Colors look natural (e.g., RGB images show correct colors).
  • Image size matches expected dimensions.
  • Image updates correctly if changed.

Bad display:

  • Window does not open or crashes.
  • Colors look strange (e.g., blue and red swapped).
  • Image is stretched or squished.
  • Image does not update or shows old data.
Common pitfalls when displaying images
  • Color channel order: OpenCV uses BGR order, but matplotlib uses RGB. Forgetting to convert colors causes wrong colors.
  • Not calling waitKey with cv2.imshow: Without cv2.waitKey(), the window may not display or close immediately.
  • Not calling plt.show() with matplotlib: The image may not appear if plt.show() is missing.
  • Image data type: Using wrong data types (e.g., float instead of uint8) can cause display issues.
  • Window blocking: cv2.imshow blocks code execution until a key press, which can confuse beginners.
Self-check question

Your code uses cv2.imshow to show an image, but the colors look strange (reds appear blue). What is likely the problem and how do you fix it?

Answer: The image is likely in RGB format (e.g., loaded with PIL or matplotlib), but cv2.imshow expects BGR. Fix by converting with cv2.cvtColor(image, cv2.COLOR_RGB2BGR).

Key Result
For image display, visual correctness (color, size, window behavior) is the key metric, not numeric scores.