微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用值列表在图片上绘制多个正方形?

如何解决如何使用值列表在图片上绘制多个正方形?

我是Python的初学者,试图解决有关图像处理的练习。练习说:写一个函数,将一张图片作为元组列表的列表(每个元组具有代表RGB颜色的三个值),并对其进行修改,以给定顺序绘制列表中存在的所有正方形。

列表的每个元素是一个包含以下元素的管道:

(x,y,side,(color))

x,y =图片中要绘制的正方形的位置 l =要绘制的正方形的像素长度 color = RGB颜色,描述为三个值的元组,表示要绘制的正方形的颜色

我知道如何在图片上绘制一个正方形。问题是我不知道如何在不调用多次的情况下使用单个函数绘制多个正方形。

import immagini


def disegna_quadrato (imm,x,l,colore):
    
    h,w = len(imm),len(imm[0])
    for i in range(y,y+l):
        for j in range(x,x+l):
            if i<h and j< w:
                imm[i][j]=colore            
                
def disegna_quadrati(imm,lista):
    
    for a in lista:
        for b in a:
            imm[a][b] = disegna_quadrato()
                
if __name__== '__main__':

 imm = immagini.load('fiore.png')
 im1 = disegna_quadrati (imm,[(20,20,40,(255,255,255)),(30,30,(180,180,180)),(40,(100,100,100))])
 immagini.save(imm,'fiore-squares.png')

正如您在我的代码中看到的那样,第一个函数disegna_quadrato拍摄图片,一些值并绘制一个正方形。我只想通过一次调用disegna_quadrati函数来绘制列表中存在的正方形。

我不知道使用两个函数是否是个好主意。

任何帮助将不胜感激!

解决方法

使用两个功能是一个好主意!
在第二个函数中调用第一个函数时,将其想法发送给第一个函数。
您可以在此处进行

def disegna_quadrati(imm,lista): 
    for a in lista:
        disegna_quadrato(imm,a[0],a[1],a[2],a[3])

您无需遍历a,所有信息一起使用一次。


也许我不太了解您的问题。告诉我是否可以。


如果有任何疑问,请随时提问。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。