当我用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')
答案 0 :(得分:2)
是的,默认情况下它会读取BGR,如果要读取灰度图像,则需要在imread中使用第二个参数。来自docs:
阅读图片
使用函数cv2.imread()读取图像。该 图像应位于工作目录或图像的完整路径中 应该给出。
第二个参数是一个标志,指定图像的方式 读取。
- cv2.IMREAD_COLOR:加载彩色图像。任何图像的透明度都会 被忽视了。这是默认标志。
- cv2.IMREAD_GRAYSCALE:加载 灰度模式下的图像
- cv2.IMREAD_UNCHANGED:这样加载图片 包括alpha通道注意你可以代替这三个标志 只需分别传递整数1,0或-1。
醇>请参阅以下代码:
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')