Difference between plt.show and cv2.imshow?

Why is there a difference in the output image when calling the same image using plt.show and cv2.imshow ()?

Here is my code:

import cv2 import numpy as np from matplotlib import pyplot as plt src=cv2.imread('fruits1.jpg') # Source image plt.subplot(211),plt.imshow(src),plt.title('image') plt.xticks([]),plt.yticks([]) plt.show() cv2.imshow('image',src) cv2.waitKey(0) cv2.destroyWindow() 

Here is the image from plt.show:

image output for plt.show

and the second is the original image:

output image from cv2.show

Is there any modification required with plt.show ()?

+5
source share
1 answer

Because OpenCV stores images in BGR order instead of RGB.

Try plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

See here for an example.

+8
source

All Articles