【发布时间】:2018-01-01 19:52:16
【问题描述】:
需要将图像作为数组读取,并为每个像素选择 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]
上面的代码适用于一张图片,但Wall time: 5min 19s 我有 2000 张图片,所以要花很长时间才能处理所有图片。我正在寻找一种更快的方法来迭代每个像素并完成上述任务。
【问题讨论】:
-
你能把图像分成几块,然后用线程或类似的东西处理不同的部分吗?
-
我不太明白您要选择哪些相邻像素。你能详细说明一下吗?
-
@Jacobr365 没有必要的技能来做到这一点
-
另外,你想如何处理图像的边缘?
-
认为应该是:
X_training=np.zeros([0,147] ,dtype=np.uint8).
标签: python numpy scipy scikit-learn scikit-image