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

2024-05-19 03:38:55 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图去除图像的第三维度(RGB维度)以便将它们输入Knn分类器进行人脸识别时,我遇到了这种令人困惑的情况。在

我从wild数据库中的标签人脸中选取一张彩色人脸图像作为例子。它保存在本地。在

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

在(时间1),维度是2:(250250)。但是,在(时间2),维度变为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)

Tags: path图像import尺寸时间图片thiscv2
1条回答
网友
1楼 · 发布于 2024-05-19 03:38:55

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

作为Opencv imread documentaion,默认值是cv2.IMREAD_COLOR,因此设置标志时,cv2.imread的默认设置是读取彩色图像,因此它将灰度图像分成3个通道。在

通过特定的cv2.imread("path/newname" , cv2.IMREAD_GRAYSCALE),函数将读取灰度图像。在

相关问题 更多 >

    热门问题