| 113 | |
| 114 | # 显示图片 |
| 115 | def display_imageData(imgData): |
| 116 | sum = 0 |
| 117 | ''' |
| 118 | 显示100个数(若是一个一个绘制将会非常慢,可以将要画的图片整理好,放到一个矩阵中,显示这个矩阵即可) |
| 119 | - 初始化一个二维数组 |
| 120 | - 将每行的数据调整成图像的矩阵,放进二维数组 |
| 121 | - 显示即可 |
| 122 | ''' |
| 123 | m,n = imgData.shape |
| 124 | width = np.int32(np.round(np.sqrt(n))) |
| 125 | height = np.int32(n/width); |
| 126 | rows_count = np.int32(np.floor(np.sqrt(m))) |
| 127 | cols_count = np.int32(np.ceil(m/rows_count)) |
| 128 | pad = 1 |
| 129 | display_array = -np.ones((pad+rows_count*(height+pad),pad+cols_count*(width+pad))) |
| 130 | for i in range(rows_count): |
| 131 | for j in range(cols_count): |
| 132 | max_val = np.max(np.abs(imgData[sum,:])) |
| 133 | display_array[pad+i*(height+pad):pad+i*(height+pad)+height,pad+j*(width+pad):pad+j*(width+pad)+width] = imgData[sum,:].reshape(height,width,order="F")/max_val # order=F指定以列优先,在matlab中是这样的,python中需要指定,默认以行 |
| 134 | sum += 1 |
| 135 | |
| 136 | plt.imshow(display_array,cmap='gray') #显示灰度图像 |
| 137 | plt.axis('off') |
| 138 | plt.show() |
| 139 | |
| 140 | if __name__ == "__main__": |
| 141 | PCA_2D() |