将Mat对象转换为标准12x12矩阵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Mat对象转换为标准12x12矩阵相关的知识,希望对你有一定的参考价值。

我将每个角色都作为Mat对象,它们的大小不同。一些样本图像是,

Sample Image 1 Sample Image 2

我正在尝试使用PIL将它们转换为图像,然后转换为标准的12x12矩阵,将其展平为144列1D阵列。建议之后,我使用的代码如下所示

#roi is a Mat Object
images = cv2.resize(roi,(12,12))
myImage = Image.fromarray(images)
withoutReshape = np.array(myImage.getdata()) #Corresponding output attached
print(withoutReshape)
withReshape = np.array(myImage.getdata()).reshape(myImage.size[0], myImage.size[1], 3) 
print(withReshape) #Corresponding output attached

无法找到使用reshape的重要性。另外,在使用resize之后,如何将矩阵展平为数组

Link to output files with and without reshape

Link for complete code and source image that I am using

答案

您将ndarray.resize与图像大小调整功能混淆。这不是它的工作原理。 Numpy不知道你的阵列是一个图像,只会调整阵列大小而不关心内容。

你应该使用OpenCV resize函数。

images = cv2.resize(images, (12, 12))

此外,您需要在从PIL数据创建后将images数组重新整形为图像尺寸。看看this question,看看它是如何完成的。

以上是关于将Mat对象转换为标准12x12矩阵的主要内容,如果未能解决你的问题,请参考以下文章

将二维数组转换为犰狳矩阵(垫)对象

将 arma::mat 邻接矩阵转换为 C 中的 igraph 图 (Rcpp)

将八度矩阵转换为 oct 文件中的 cv::Mat

如何将 Mat 转换为 dlib 的矩阵

使用 List 将 R 矩阵转换为 arma::mat

cv::Mat 转换为特征矩阵并返回