Python 为什么cv2转换的灰度图像仍然有3个通道?
我在尝试去除图像的第三维(RGB维)以便将其输入Knn分类器进行人脸识别时遇到了这种令人困惑的情况 我从wild数据库中的标记人脸中选取了一张彩色人脸图像作为示例。它保存在本地 我首先导入图像,然后将其转换为灰度,然后检查尺寸(时间1),然后使用“imwrite”导出,然后再次导入灰度图像,然后再次检查其尺寸(时间2) 在(时间1),维度为2:(250250)。然而,在(时间2),维度变为3:(250,250,3)。为什么导出和导入会改变灰度图片的尺寸?导入灰度图片以保持二维时,我应该指定什么 以下是我的python代码:Python 为什么cv2转换的灰度图像仍然有3个通道?,python,cv2,Python,Cv2,我在尝试去除图像的第三维(RGB维)以便将其输入Knn分类器进行人脸识别时遇到了这种令人困惑的情况 我从wild数据库中的标记人脸中选取了一张彩色人脸图像作为示例。它保存在本地 我首先导入图像,然后将其转换为灰度,然后检查尺寸(时间1),然后使用“imwrite”导出,然后再次导入灰度图像,然后再次检查其尺寸(时间2) 在(时间1),维度为2:(250250)。然而,在(时间2),维度变为3:(250,250,3)。为什么导出和导入会改变灰度图片的尺寸?导入灰度图片以保持二维时,我应该指定什么
尝试
gray2=cv2.imread(“路径/新名称”,cv2.imread\u灰度)
由于默认设置为cv2.IMREAD\u COLOR
,因此通过设置标志,cv2.IMREAD
的默认设置是读取彩色图像,因此它会将灰度图像分割为3个通道
通过特定的
cv2.imread(“path/newname”,cv2.imread\u GRAYSCALE)
,该函数将以灰度读取图像。我相信上面可能会回答这一问题。试试这个:img=cv2.imread('gray.jpg',0)
如果您使用cv2.imread\u UNCHANGED
而不是0
,您的代码的未来读者将感谢您。不要走得太远,但是你可以通过这样声明来减少0是一个神奇的变量:READ\u GRAYSCALE\u ONLY\u FLAG=0
,然后再通过:)^这太过分了。不要编造新的常数;使用已经存在的常量。
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)