matplotlib.image和cv2.imread

时间:2017-10-26 06:33:20

标签: python python-3.x opencv matplotlib

当我用matplotlib.image读取灰度图像时,它显示尺寸(512,512)和类型(float32)但是当我使用cv2.imread来显示相同​​的图像时(512,512,3)并输入uint8。为什么会这样?由于默认标志,cv2.imread命令会自动将图像转换为BGR格式。 (我使用的是python 3和opencv2。)以下是代码:

import cv2
import matplotlib.image as mpimage
img = cv2.imread('image_1.png')
img1=mpimage.imread('image_1.png')

1 个答案:

答案 0 :(得分:2)

是的,默认情况下它会读取BGR,如果要读取灰度图像,则需要在imread中使用第二个参数。来自docs

  

阅读图片

     

使用函数cv2.imread()读取图像。该   图像应位于工作目录或图像的完整路径中   应该给出。

     

第二个参数是一个标志,指定图像的方式   读取。

     
      
  1. cv2.IMREAD_COLOR:加载彩色图像。任何图像的透明度都会   被忽视了。这是默认标志。
  2.   
  3. cv2.IMREAD_GRAYSCALE:加载   灰度模式下的图像
  4.   
  5. cv2.IMREAD_UNCHANGED:这样加载图片   包括alpha通道注意你可以代替这三个标志   只需分别传递整数1,0或-1。
  6.         

    请参阅以下代码:

    import numpy as np import cv2
    
    #Load an color image in grayscale 
    img = cv2.imread('messi5.jpg',0)
    

因此,如果你想在默认情况下读取灰度图像,你需要将imread中的第二个参数作为1,而不是0.下面代码的这个细微变化应该在两个实例中以相同的图像格式读取< / p>

import cv2
import matplotlib.image as mpimage
img = cv2.imread('image_1.png', 1)
img1=mpimage.imread('image_1.png')