matplotlib adding blue shade to an image
<p>I am trying to use matplotlib for basic operations but I see that whenever I try to display an image using matplotlib, a blue shade is added to the image. </p>

<p>For example, </p>

<p>Code:</p>

<pre><code># import the necessary packages
import numpy as np
import cv2
import matplotlib.pyplot as plt

image = cv2.imread("./data/images/cat_and_dog.jpg")
cv2.imshow('image',image) # Display the picture


plt.imshow(image)
plt.show()

cv2.waitKey(0) # wait for closing
cv2.destroyAllWindows() # Ok, destroy the window
</code></pre>

<p>And the images shown by opencv gui and matplotlib are different.</p>

<p><a href="https://i.stack.imgur.com/Qqe4K.jpg" rel="nofollow"><img src="https://i.stack.imgur.com/Qqe4K.jpg" alt="enter image description here"></a></p>

<p>Even the histogram is distorted and not just the display</p>

<p><a href="https://i.stack.imgur.com/KL1X9.png" rel="nofollow"><img src="https://i.stack.imgur.com/KL1X9.png" alt="enter image description here"></a></p>

<p>How do I avoid this blue shade on an image</p>

<p>see: <a href="http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_image_display/py_image_display.html#using-matplotlib" rel="nofollow">http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_image_display/py_image_display.html#using-matplotlib</a></p>

<blockquote>
  <p>Warning: Color image loaded by OpenCV is in BGR mode. But Matplotlib
  displays in RGB mode. So color images will not be displayed correctly
  in Matplotlib if image is read with OpenCV. Please see the exercises
  for more details.</p>
</blockquote>

<p>you can replace your <code>plt.imshow(image)</code> line with the following lines:</p>

<pre><code>im2 = image.copy()
im2[:, :, 0] = image[:, :, 2]
im2[:, :, 2] = image[:, :, 0]
plt.imshow(im2)
</code></pre>

python opencv image-processing matplotlib