首页 > 解决方案 > 更改图像中选定 ROI 的颜色

问题描述

我有如下图所示,

在此处输入图像描述

我选择了三个由红色框标记的感兴趣区域 (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)

但是,结果出乎意料(没有任何变化)。

标签: pythonnumpybackground-colorroi

解决方案


进入控制台后,我可以看到问题所在。

为了模拟你似乎在做什么,我使用了一个形状为 (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 是颜色的 rgb 分量。

高温高压


推荐阅读