您好我相对较新的Python,目前正致力于测量图片中的要素宽度。我的图像分辨率为1米,因此测量宽度应该更容易。我设法选择图像的某些列或行,并使用循环等提取必要的数据。我的代码如下:
subset = imarray[:,::500]#(imarray.shape[1]/2):(imarray.shape[1]/2)+1]
subset[(subset > 0) & (subset <= 17)] = 1
subset[(subset > 17)] = 0
width = []
count = 0
for i in np.arange(subset.shape[1]):
column = subset[:,i]
for value in column:
if (value == 1):
count += 1
width.append(count)
width_arr = np.array(width).astype('uint8')
else:
count = 0
final = np.split(width_arr, np.argwhere(width_arr == 1).flatten())
final2 = [x for x in final if x != []]
width2 = []
for array in final2:
width2.append(max(array))
width2 = np.array(width2).astype('uint8')
print width2
我无法弄清楚如何分割输出,以便分别显示每列或每行的结果。相反,我所能做的就是将数据附加到空列表中,并输出以下内容:
[ 70 35 4 2 5 36 4 5 2 51 97 4 228 3 21 47 7 21
23 58 126 4 111 2 2 5 3 2 18 15 6 19 3 3 12 15
6 8 2 4 6 88 122 24 14 49 73 57 74 6 179 8 3 2
6 3 184 9 3 19 24 3 2 2 3 255 30 8 191 33 127 5
3 27 112 2 24 2 5 2 10 30 10 6 37 2 38 6 12 17
44 67 23 5 101 10 9 4 6 4 255 136 5 255 255 255 255 26
255 235 148 4 255 199 3 2 114 87 255 109 69 12 41 20 30 57
72 89 32]
因此,这些是附加在一起的所有列中的要素的宽度。如何使用我的循环或其他方法将它们分成单独的numpy数组,这些数组代表我从原始列中切出的每一列?
看起来我几乎就在那里,但我似乎无法想出最后一步,它让我疯狂。
提前感谢您的帮助!