当我试图去除图像的第三维度(RGB维度)以便将它们输入Knn分类器进行人脸识别时,我遇到了这种令人困惑的情况。在
我从wild数据库中的标签人脸中选取一张彩色人脸图像作为例子。它保存在本地。在
我首先导入图像,然后将其转换为灰度,然后检查尺寸(time1),然后使用“imwrite”导出,然后再次导入灰度图像,然后再次检查其尺寸(time2)。在
在(时间1),维度是2:(250250)。但是,在(时间2),维度变为3:(250,250,3)。为什么导出和导入会改变灰度图片的尺寸?当导入灰度图片以保持二维时,我应该指定什么?
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)
尝试
gray2 = cv2.imread("path/newname" , cv2.IMREAD_GRAYSCALE)
作为Opencv imread documentaion,默认值是
cv2.IMREAD_COLOR
,因此设置标志时,cv2.imread
的默认设置是读取彩色图像,因此它将灰度图像分成3个通道。在通过特定的
cv2.imread("path/newname" , cv2.IMREAD_GRAYSCALE)
,函数将读取灰度图像。在相关问题 更多 >
编程相关推荐