Python:SKPCA平均值转换为opencv2 RGB图像
我正在尝试将PCA平均值转换为RGB,但我得到了错误:Python:SKPCA平均值转换为opencv2 RGB图像,python,opencv,scikit-learn,pca,Python,Opencv,Scikit Learn,Pca,我正在尝试将PCA平均值转换为RGB,但我得到了错误:cv2.error:/build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/color.cpp:3642:error:(-215)depth==CV|8U||depth==cvu 16U||depth==CV 32F函数cvtColor此错误是由行mean=cv2.cvtColor引起的 我的代码: def featureExtract(self, images, dim, k = 4):
cv2.error:/build/buildd/opencv-2.4.8+dfsg1/modules/imgproc/src/color.cpp:3642:error:(-215)depth==CV|8U||depth==cvu 16U||depth==CV 32F函数cvtColor
此错误是由行mean=cv2.cvtColor引起的
我的代码:
def featureExtract(self, images, dim, k = 4):
faces_rowvecs = []
nDim = None
for image in images:
image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
nDim = image.shape
faces_rowvecs.append(image.flatten("C").copy())
faceData = np.vstack(faces_rowvecs)
pca = PCA(n_components=k)
pca.fit(faceData)
mean = pca.mean_
mean = mean.reshape(nDim[0],nDim[1], nDim[2])
mean = cv2.normalize(mean, dim, norm_type=cv2.NORM_MINMAX)
mean= cv2.cvtColor(mean, cv2.COLOR_RGB2BGR)
您的均值
矩阵不是uint8
、uint16
类型,也不是float32
。试着使用类似这样的方法:mean=cv2.normalize(mean,dim,norm\u type=cv2.norm\u MINMAX,dtype=uint8)
然后调用cvtColor
这很有效,但如果我想cv2.imshow('image',mean)
则图像是黑色的。当我在cv2.imshow('image',mean)
之前执行cv2.cvtColor(mean,cv2.COLOR_RGB2BGR)
时,我看到了正确的图像。