mat type = 15 is not supported
I got an error while changing an eigenvector as an image
def getEigenVectorsAndEigenValues(covarianceMatx):
print("Compute Eigens...")
logger.info("Compute Eigens...")
eigenSolution = np.linalg.eig(covarianceMatx)
# print("len eigenSolution", len(eigenSolution))
# print("eigenSolution", eigenSolution)
eigenValues = eigenSolution[0]
# print("eigenValues", len(eigenValues))
eigenVectors = eigenSolution[1]
# print("eigenVectors", type(eigenVectors))
# print("eigenVectors-1", type(eigenVectors[0]))
# resized = cv2.resize(eigenVectors[2],(512,512))
# cv2.imshow("eigen",resized)
# cv2.waitKey()
sort = eigenValues.argsort()[::-1]
eigenValues = eigenValues[sort]
eigenVectors = eigenVectors[:, sort]
# Each eigenvector has the same dimensionality(number
# of components) as the original images, and thus
# can itself be seen as an image
logger.info("shape eigenValues" + str(np.asarray(eigenValues).shape))
logger.info("shape eigenVectors" + str(np.asarray(eigenVectors).shape))
logger.info("shape eigenVectors[0]" + str(np.asarray(eigenVectors[0]).shape))
logger.info("shape eigenVectors[0][0]" + str(np.asarray(eigenVectors[0][0]).shape))
logger.info("value in eigenVectors" + str(eigenValues))
# for i in range(0, 4095):
for i in range(0, 361):
imageFromVector = np.asarray(eigenVectors[i])
imageFromVector = imageFromVector.reshape((19, 19))
imageFromVector2 = np.array(np.dstack([imageFromVector.real,imageFromVector.imag])) # What I added
print("imageFromVector shape", imageFromVector.shape)
print("imageFromVector type", type(imageFromVector))
cv2.imshow("imageFromVector", imageFromVector2) # Error in here!
cv2.waitKey()
# imageFromVector.reshape((64, 64))
file = str(i) + ".jpg"
cv2.imwrite(filename=file, img=imageFromVector)
# resized = cv2.resize(eigenVectors[0], (512, 512))
# cv2.imshow("eigen", resized)
# cv2.waitKey()
logger.info("Compute Eigens... Done")
return eigenVectors, eigenValues
before I added imageFromVector2 = np.array(np.dstack([imageFromVector.real,imageFromVector.imag]))
, show an error like this
after I added that code, it shown
File "E:/PROJECT_FOLDER/PYTHON/PKLBPPT/PCA-with-VJ.py", line 169, in getEigenVectorsAndEigenValues
cv2.imshow("imageFromVector", imageFromVector2)
cv2.error: D:\Build\OpenCV\opencv-3.2.0\modules\imgcodecs\src\utils.cpp:611: error: (-15) Source image must have 1, 3 or 4 channels in function cvConvertImage
Anyone knows what's wrong with this code?