需要将图像作为数组读取,并为每个像素选择7 * 7个相邻像素,然后重新整形并作为第一行训练集:
import numpy as np
from scipy import misc
face1=misc.imread('face1.jpg')
face1尺寸为(288,352,3),需要为每个像素找到7 * 7个相邻像素,所以49 * 3颜色然后将其重新整形为(1,147)数组并将其堆叠成所有像素的数组,我拿了以下方法:
X_training=np.zeros([1,147] ,dtype=np.uint8)
for i in range(3, face1.shape[0]-3):
for j in range(3, face1.shape[1]-3):
block=face1[i-3:i+4,j-3:j+4]
pxl=np.reshape(block,(1,147))
X_training=np.vstack((pxl,X_training))
得到的X_training形状是(97572,147)
并且最后一行包含全部为零:
a = len(X_training)-1
X_training = X_training[:a]
上面的代码适用于一张图片,但壁画时间:5分钟19秒我有2000张图片,因此所有图片都需要很长时间.我正在寻找一种更快的方法来迭代每个像素并执行上述任务.
编辑:
这就是我所说的邻居像素,对于每个像素face1 [i-3:i 4,j-3:j 4]