我试图在表示二进制图像的数组中设置单个列中一系列行的值
基本上,我正在尝试执行图像扩展,并希望根据基本图像中已等于1的像素位置,将单个列中几行的值设置为1。相关代码如下
for j in critspace_c:
for i in critspace_r:
if image[i][j] == 0:
pass
elif image[i][j] == 255:
for k in range(1, criterion+1):
img_dilated[range(i-k, i+k+1)][j] = 255
基本上,我希望最后一行解释为:“对于以j列中的行I为中心的2k+1行,将它们的值设置为255。”
我得到以下错误:
img_dilated[range(i-k, i+k+1)][j] = 255
IndexError: index 37 is out of bounds for axis 0 with size 3"
我明白为什么会这样;代码将j(其为37,因为相关像素在第37列中)解释为前一组索引的索引,其值小于37。但是,我希望程序将j解释为img\u扩展矩阵的列索引。有没有办法“跳过”直接跟在矩阵名称后面的[],以便将[j]应用于矩阵,而不是括号中的索引
提前谢谢大家
编辑以防将来有人遇到此问题:
我想出了解决办法。由于图像表示为数组,因此可以使用逗号分隔的坐标对其进行索引。我把这个图像当作一个列表,其实不然。代码的最后一行应该是:
img_dilated[range(i-k, i+k+1), j] = 255
希望这有帮助
目前没有回答
相关问题 更多 >
编程相关推荐