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

问题描述

我是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,所有信息一起使用一次。


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


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