需要用Python比较两张图片的帮助

0 投票
1 回答
519 浏览
提问于 2025-04-16 05:26

大家好,我正在为我的计算机科学课做一个作业,但我不知道哪里出错了。这个函数应该接收两张图片,pic1 和 pic2,然后返回它们之间的差异。

这是我写的代码:

def smart_difference(pic1, pic2):
    '''Given two Pictures, pic1 and pic2 of any size and colour, return the 
    difference'''
    red = red_average(pic2)
    blue = blue_average(pic2)
    green = green_average(pic2)

    pic1_height, pic1_width = media.get_height(pic1), media.get_width(pic1)
    pic2_height, pic2_width = media.get_height(pic2), media.get_width(pic2)
    if (pic1_height > pic2_height) and (pic1_width > pic2_width): 
        new_pic1 = media.create_picture(pic2_width, pic2_height)
        new_pic2 = pic2
    elif (pic1_height > pic2_height) and (pic2_width > pic1_width):
        new_pic1 = media.create_picture(pic2_width, pic1_height)
        new_pic2 = media.create_picture(pic2_width, pic1_height)
    elif (pic2_height > pic1_height) and (pic2_width > pic1_width):
        new_pic1 = pic1
        new_pic2 = media.create_picture(pic1_width, pic1_height)
    elif (pic2_height > pic1_height) and (pic1_width > pic2_width):
        new_pic1 = media.create_picture(pic2_width, pic1_height)
        new_pic2 = media.create_picture(pic2_width, pic1_height)

    scale_red(new_pic1, red)
    scale_blue(new_pic1, blue)
    scale_green(new_pic1, green)
    scale_red(new_pic2, red)
    scale_blue(new_pic2, blue)
    scale_green(new_pic2, green)
    return simple_difference(new_pic1, new_pic2)

我运行了一个自测文件(这是作业中给我们的),但是我总是遇到错误,有人能帮帮我吗?

*备注:Simple_difference 是我之前写的另一个函数,用来计算两张图片中像素之间的距离,并进行相应的缩放。

1 个回答

0

好的,错误信息是:“AssertError: smart_difference 之后的结果应该在 0 到 1200 之间,而不是 35000”

这是我为简单差异所写的代码:

def simple_difference(pic1, pic2):

'''给定两个尺寸相同的图片 pic1 和 pic2,返回这两张图片在颜色上的距离总和。'''

sum_distance = 0
for pix1, pix2 in zip(pic1, pic2):
    sum_distance += distance(pix1, pix2)
return sum_distance

我正在使用一个我们课堂上必须用的媒体库,运行的是 Python 2.5……这有点荒谬,但这就是我们必须使用的版本。

撰写回答