前提・実現したいこと
使用言語はpythonです。
0/1の値で構成された384×384配列の、1で囲まれた部分のすべての値を1に変えたいです。
そのため、
[0,0,1,1,0,0,0,0,1,1,1,0,0]のような配列を
[0,0,1,1,1,1,1,1,1,1,1,0,0]にするようなコードの書き方を教えていただきたいです。
これができれば行でfor文をとれば実現したいことができると思います。
その他、エレガントな方法があればぜひ教えていただきたいです。
また、初学者なので丁寧にご教示いただけると幸いです。
試したこと
OpenCVでcv2.fillPoly
を使ったところ、囲われた部分を完全に塗りつぶし切れておらず、空白部分があったため、素朴な方法でも試してみたいです。
for文でも書こうとしたが不慣れなためかうまくいかない
# lineが元データ a = np.array([]) b = np.array([]) image = np.zeros((384, 384)) for i in range(1,384): for j in range(1,384): if line[i][j] == 1: b = np.append(a,np.array(i)) else: a = a image[i][np.min(b):np.max(b)]=1 plt.imshow(image, cmap="gray") --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-134-049f4411d5be> in <module>() 9 a = a 10 ---> 11 image[i][np.min(b):np.max(b)]=1 12 13 plt.imshow(image, cmap="gray") 1 frames /usr/local/lib/python3.6/dist-packages/numpy/core/fromnumeric.py in _wrapreduction(obj, ufunc, method, axis, dtype, out, **kwargs) 84 return reduction(axis=axis, out=out, **passkwargs) 85 ---> 86 return ufunc.reduce(obj, axis, dtype, out, **passkwargs) 87 88 ValueError: zero-size array to reduction operation minimum which has no identity
回答4件
あなたの回答
tips
プレビュー