为什么cv2转换的灰度图像仍具有3个通道?

时间:2018-11-05 17:24:22

标签: python cv2

当我尝试摆脱图像的三维尺寸(RGB尺寸)以将其输入到Knn分类器进行面部识别时,遇到了令人困惑的情况。

我以野生野生标签数据库中的一张彩色面部图像为例。它保存在本地。

我首先导入图像,然后将其转换为灰度,然后检查尺寸(time1),然后使用“ imwrite”导出,然后再次导入灰度图像,然后再次检查其尺寸(time2)。

在(time1),尺寸为2:(250,250)。但是,在(time2),维度变为3:(250、250、3)。 为什么导出和导入会更改灰度图片的尺寸?导入灰度图片以保持二维时应该指定什么?

这是我的python代码:

import cv2

import matplotlib.pyplot as plt

imgBGR = cv2.imread("path/filename")

gray = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2GRAY)

gray.shape  # this gives me (250, 250)

cv2.imwrite("path/newname", gray)

gray2 = cv2.imread("path/newname")

gray2.shape  # this gives me (250, 250, 3)

1 个答案:

答案 0 :(得分:1)

尝试gray2 = cv2.imread("path/newname" , cv2.IMREAD_GRAYSCALE)

Opencv imread documentaion一样,默认值为cv2.IMREAD_COLOR,因此设置该标志后,cv2.imread的默认设置将读取彩色图像,因此它将灰度图像分为3个通道。

根据特定的cv2.imread("path/newname" , cv2.IMREAD_GRAYSCALE),该功能将以灰度读取图像。