我有如下图所示,
我选择用红色框标记的三个感兴趣的区域(ROI),并且要删除所有黄色并用白色(背景色)替换。
我的代码是
a=np.copy(img)
a[0:0, 50:50][:,:,:]=255
a[130:270, 210:350][:,:,:]=255
a[0:340, 210:390][:,:,:]=255
plt.imshow(a)
但是,结果出乎意料(没有变化)。
答案 0 :(得分:1)
必须要安装控制台,我才能看到问题所在。
为了模拟您似乎在做什么,我使用了形状为(400,210,3)的随机数组
a = np.random.randint(256, size = (400,210,3))
您的选择
a[0:0, 50:50]
Out[10]: array([], shape=(0, 0, 3), dtype=int64)
0:0和50:50都返回零元素选择,因此存在一个具有两个零长度轴的3D数组。将此值设置为255不会影响任何元素。
a[130:270, 210:350]
Out[13]: array([], shape=(140, 0, 3), dtype=int64)
在这种情况下,210:350不在长度轴210的范围内。Numpy再次返回零长度轴。将此设置为255无效。
a[0:350, 210:390][:,:,:]
Out[14]: array([], shape=(350, 0, 3), dtype=int64)
轴1的选择再次超出范围,因此返回长度为零的轴的数组。
您正在将矩形指定为(左上,右下)坐标。必须是row_range,column_range。
我想你想要类似的东西:
a[0:50, 0:50, : ] = 255
a[270:350, 130:210, : ] = 255
a[340:390, 0:210, : ] = 255
选择轴0为行(y轴),选择轴1为列(x轴)。 Axis2是颜色的r g b分量。
HTH