【问题标题】:Draw image grid in python在python中绘制图像网格
【发布时间】:2016-06-13 10:42:46
【问题描述】:

我在学校有这个练习,制作一个在现有图像中绘制网格的函数。 draw_grid(img, s, c) img - 图像 s - 行间距 c - 颜色

    def draw_grid(img, s, c):
        a = s
        b = s
        for i in range(len(img)):
            for j in range(len(img[0])):
                if i == a:
                    img[i][j] = c
            if img[i][j] == c:
                a = a + s
        for i in range(len(img)):
            for j in img[i]:
                if img[i].index(j) == b:
                    img[i][img[i].index(j)] = c
                    b = b + s
        im.visd(img)
    import image as im
    img = im.create(200, 100, (200,200,200))

使用我的代码,它只生成水平线。

this is what i`ve got so far:

【问题讨论】:

  • “它不起作用”不是有效的问题描述。我是图书馆吗?如果是这样,请为其添加标签。
  • im 是图片库,我刚刚加了。我希望新的描述没问题。我对此有点陌生。

标签: python grid


【解决方案1】:

我认为您的问题在于if img[i].index(j) == b:,index 返回其参数在列表中第一次出现的索引,但 j 应该已经是索引,而不是您在图像中寻找的元素。

您的循环似乎太复杂了,您不需要 a、b 或任何“if”,如果您使用带 3 个参数的范围,则第三个参数是增量步骤:

for i in range(0, 10, 2):
    print(i) # print 0, 2, 4, 6, 8

所以你可以有这样的循环:

for i in range(0, len(img), s):
    for j in range(len(img[0])):
        img[i][j] = c
for i in range(0, len(img[0]), s):
    for j in range(len(img)):
        img[j][i] = c

【讨论】:

  • 泰!你真是太棒了,先生。我已经为此工作了 2 天,我不敢相信它从来没有发生在我身上,range() 可以像这样使用。又来了。
猜你喜欢
  • 2011-07-06
  • 1970-01-01
  • 2019-02-05
  • 1970-01-01
  • 2012-01-02
  • 2013-12-20
  • 2011-08-05
  • 1970-01-01
相关资源
最近更新 更多