简体   繁体   中英

Difference between plt.show and cv2.imshow?

Why is there a difference in the output image when calling the same image using plt.show & 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 :

plt.show 的图像输出

and the second one is the original image:

cv2.show 的图像输出

Is there some modification required with the plt.show() ?

Because OpenCV stores images in BGR order instead of RGB.

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

See here for an example.

you can either use:

plt.imshow(cv2.cvtColor(image,cv2.COLOR_BGR2RGB))
                        OR
plt.imshow(image[:,:,::-1])  # here we are reversing the channel order

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM