当我尝试摆脱图像的三维尺寸(RGB尺寸)以将其输入到Knn分类器进行面部识别时,遇到了令人困惑的情况。
我以野生野生标签数据库中的一张彩色面部图像为例。它保存在本地。
我首先导入图像,然后将其转换为灰度,然后检查尺寸(time1),然后使用“ imwrite”导出,然后再次导入灰度图像,然后再次检查其尺寸(time2)。
在(time1),尺寸为2:(250,250)。但是,在(time2),维度变为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)
答案 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)
,该功能将以灰度读取图像。