美文网首页
Python PIL实现图片重叠

Python PIL实现图片重叠

作者: 机器视觉CV_有三言选 | 来源:发表于2018-08-27 23:21 被阅读0次

    入学前学校有个作业,想想可以搞点啥呢

    于是就想着可以用PIL模块,把学校的风景和某些元素叠加起来

    于是在网上搜寻了一些资料,看到的都是烂七八糟的,以及从其他地方COPY下来的
    于是自己就找到了PIL模块的手册搞起来

    图1

    11.jpg

    图2

    22.jpg

    这个程序的功能是实现两张图片重叠起来

    from PIL import Image
    import math
    img1 = Image.open('1.jpg')#图片1
    img2 = Image.open('2.jpg')#图片2
    
    #该函数的作用是由于 Image.blend()函数只能对像素大小一样的图片进行重叠,故需要对图片进行剪切。
    def cut_img(img, x, y):
        """
        函数功能:进行图片裁剪(从中心点出发)
        :param img: 要裁剪的图片
        :param x: 需要裁剪的宽度
        :param y: 需要裁剪的高
        :return: 返回裁剪后的图片
        """
        x_center = img.size[0] / 2
        y_center = img.size[1] / 2
        new_x1 = x_center - x//2
        new_y1 = y_center - y//2
        new_x2 = x_center + x//2
        new_y2 = y_center + y//2
        new_img = img.crop((new_x1, new_y1, new_x2, new_y2))
        return new_img
    
    
    #print(img1.size, img2.size)
    
    #取两张图片中最小的图片的像素
    new_x = min(img1.size, img2.size)[0]  
    new_y = min(img1.size, img2.size)[1]
    
    new_img1 = cut_img(img1, new_x, new_y)
    new_img2 = cut_img(img2, new_x, new_y)
    #print(new_img1.size, new_img2.size)
    
    #进行图片重叠  最后一个参数是图片的权值
    final_img2 = Image.blend(new_img1, new_img2, (math.sqrt(5)-1)/2)
    #别问我为什么是  (math.sqrt(5)-1)/2   这个是黄金比例,哈哈!!
    final_img2.show()
    
    

    最终结果

    33.jpg

    相关文章

      网友评论

          本文标题:Python PIL实现图片重叠

          本文链接:https://www.haomeiwen.com/subject/qysxwftx.html