• Python基础 | zip() map() lambda() listdir()函数用法实例


    来源:educoder练习“基于Python语言的图像绘制与空域融合”

    本关任务

    本关的编程任务是补全step3/step3.py中的mergeOne()函数,要求实现图像空域融合的功能。具体要求如下:

    本关要求对第二关生成的若干新图像进行空域融合,也就是对多幅图像中相同位置的像素颜色值计算平均值,然后得到结果图像result.png。

    对于每个图像中都有的共同部分(例如图像中的椭圆),计算平均值后不会有什么影响。但是对于随机干扰像素,计算平均值后该干扰像素的视觉影响会被降低。例如,假设在第二关中生成了4个新图像,并且这4个新图像中只有一个图像修改了(38, 69)这个位置的像素颜色为黑色(0,0,0),而其他3个图像该位置的像素没有被修改,仍然保持为白色背景(255,255,255)。这样的话,对4个图像中该位置的像素颜色值计算平均值得到(63,63,63),从视觉效果来看可以在一定程度上减小随机干扰像素的影响。

    from os import listdir
    from PIL import Image
    
    # 对当前文件夹中所有含有随机噪点的图像,
    # 对应位置像素计算平均值,生成结果图像
    def mergeOne():
        # 请在这里补充代码,完成本关任务
        #-----------Begin----------
        imgopen = [Image.open(img) for img in listdir()
        if img.endswith('.png') and img != 'circle.png']
        im = Image.new('RGB',imgopen[0].size,(255,255,255))
        W,H = im.size
        for i in range(W):
            for j in range(H):
                dot = (i,j)
                color = (img1.getpixel(dot) for img1 in imgopen)
                color = zip(*color)
                r,g,b = map(lambda num:sum(num) // len(num),color)
                im.putpixel(dot,(r,g,b))
        im.save('./result.png')
        #------------End-----------
    
  • 相关阅读:
    20160227.CCPP体系详解(0037天)
    MinerUtil.java 爬虫工具类
    MinerUrl.java 解析页面后存储URL类
    MinerThreadPool.java 线程池
    MinerStoreThread.java 存储线程
    MinerQueue.java 访问队列
    MinerMonitorThread.java 监控线程
    MinerHtmlThread.java 爬取页面线程
    上班跟打DotA感觉差不多?姑娘你没事儿吧
    7月3日云栖精选夜读:强大的PyTorch:10分钟让你了解深度学习领域新流行的框架
  • 原文地址:https://www.cnblogs.com/-saber/p/14272643.html
Copyright © 2020-2023  润新知