需要将图像读取为数组,对于每个像素选择7*7邻域像素,然后将其重塑并放置在训练集的第一行:
上述代码适用于一张图片,但如果有2000张图片,则需要花费大量时间进行处理(
编辑:
这就是我所说的相邻像素,对于每个像素
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]
上述代码适用于一张图片,但如果有2000张图片,则需要花费大量时间进行处理(
Wall time: 5min 19s
)。我正在寻找更快的方法来迭代每个像素并执行上述任务。编辑:
![enter image description here](https://istack.dev59.com/huIsg.webp)
face1[i-3 : i+4 ,j-3:j+4]
。
X_training=np.zeros([0,147], dtype=np.uint8)
。 - Divakar