吞了1000瓶老干妈的南山头铁鹅,Python制作千图成像(附上源代码和应用程序)

简介: 最近的瓜可谓真有意思,南山头铁鹅也默默吞下下了1000瓶老干妈。此时用这张1000张老干妈辣椒酱图片组成的企鹅来表达最适合不过了

最近的瓜可谓真有意思,南山头铁鹅也默默吞下下了1000瓶老干妈。此时用这张1000张老干妈辣椒酱图片组成的企鹅来表达最适合不过了

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa1NGR1JsUW1qckd1OW92SURRejJPUlFFUjUyNXVTaWFtV2VxMlJjelk3OUJFNUhSbnhVUndRaWNnLzY0MA.jpg

我要咬人了

但是这个瓜却疑点重重:

  1. 1624万的大额广告合作,期间各项物料细节对接,这三个人就这么摆平了?
  2. 三个人据说靠游戏礼包来赚钱,这能赚多少?
  3. 三个人就算骗到钱了怎么不赶紧跑路,等着被抓。能骗到大厂上千万的智商怎么会乖乖坐以待毙?

现在擂台还在,腾讯并未撤诉也未道歉,装作一个憨憨仅仅是一个蓄力的过程。什么时候腾讯撤诉了,才代表腾讯认输了。所以好戏还在后头

1.千图成像

作为一个技术博主,分享技术才是我的初心,吃瓜的同时给大家介绍一下千图成像的原理,以及如何制作

  • 千图成像:用N张图片拼凑成一张图片。
  • 实现原理:先将所要成像的图片转化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块。
  • 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录每张图片的特征用于成像,增加成像质量。

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa1E0cldTSXlxWlVNMXBzY3UwZUhCdUFaNmZXY1hvMGZWRnROTk5pYU9qSk1KcGVpYnJSeXRlaWFDUS82NDA.png

2.爬取图片素材

之前行哥已经已经分享过代码可以批量爬取图片,需要批量爬取图片源码或者应用程序可以看一下这篇推文

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9CbDd1bWRtd005OVpxMVVvMDBNdHdYakkySFdxZzExN0JDYWhwTUUwM25ZVkxlT2hOcEtya0RPUnA0NG1tS0Z0YWpIWVZpYkxuOGljcHJ5R0pQcVhUYXlRLzY0MA.png

3.千图成像-Python代码

代码思路梳理

  1. 选好你需要拼凑的图片,将其切割为若干小块,切割的越细生成的图片效果会更好。

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa2F6enA3V3FwVDlwV1FPMDJQRXpNS05ra3JhckhzdDZpYVJSa3ZpYXFzRWYyblM3YUFTaWJscXZMUS82NDA.png

  1. 分别去我们之前保存的图片中找与与之最相似的,最后将其拼接完成。
  • 颜色相似 这个应该不难理解,我在代码中实现了灰度图像和RGB通道图像的筛选方法:
    灰度图像:直接计算所有像素灰度值的平均值,取最接近n个图像供后期再次筛选;
    RGB通道:分别计算R,G,B的平均值,对于一个图像我们得到的是一个类似与[20, 30,40]的数组,然后我们计算欧式距离,取最接近n个图像供后期再次筛选。
  • 结构相似 为什么还需要结构相似,举个例子:

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa3RwazlWODQweVFmVmljem9HTm1VNHlIV216QWlheWFoeTNrMVJSUHdDVzFaVnFiVHZ3aWJ3bWlhZFEvNjQw.png

如果单纯按照上述方法去判定相似,那上图中的图A和图B肯定是最相似的,所以我们不能单纯的因为两张图片中包含的颜色差不多就去判断为最相似,还需要去判断颜色的“位置”也要相似。

核心代码如下,在代码中需要修改图片素材路径和蒙版图片的路径,完整源码获取方式在文末查看:

from PIL import Image
import os
import numpy as np
from tqdm import tqdm
class Config:
    corp_size = 40
    filter_size = 20
    num = 100
class PicMerge:
    def __init__(self, pic_path, mode='RGB', pic_folder='wechat'):
        pass
        return picture
    def merge(self):
        pass
        return filter_
    @staticmethod
    def rgb_mean(rgb_pic):
        pass
        return val
    def mapping_table(self, pic_folder):
        pass
        return results, pic_dic
    @staticmethod
    def pic_code(image: np.ndarray):
        pass
        return one_hot
if __name__ == "__main__":
    P = PicMerge(pic_path='一行数据头像.png', mode='RGB')
    P.merge()

4.千图成像-软件使用

后来发现有更好用的软件也给大家介绍一下,那还写什么代码。软件名称叫做【FOTO-MASK—EDDA】大家可以在网上自行下载,也可以在文末查看行哥提供的下载方式。下面介绍下该软件的使用方式:

  1. 首先设置图片数据库aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa3NuYnpzeVVTRnNjMXVpYnR0bDdrS1VOWTNvQzR6RlRGS2ljTWVncHpjSWc3UU1zMnNpY0NiOVFody82NDA.png
  • 新建数据库,并选择图片素材路径aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa0ZNUERHeTRwUm0xYXJOSVlwVzE4NHp4c0kxR0Y4cmx4OFZQZ0tVZEcwdmliUnFpYWljSDBJVDNyQS82NDA.png
  1. 设置马赛克图片即图片盲板,依次设置马赛克图片路径,图片保存路径,图片素材库,马赛克参数,可重复次数、透明度等参数,最后点击Run即可aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa2o0eUhpYWxSTEFsMDZPcDcxWGxVVzY2NTFDTXdrc04weWVoaWFQSnIzcnBFWGg0ZEFNUHQyeHd3LzY0MA.png
    设置马赛克图片参数aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa1ExVlZnRlNBenc1Qm9lZ05lUFJxcE1icWljbldyQjVrRldpYmljSzNTVG5YNGdOd01Vamg1OTlady82NDA.png设置马赛克图片参数aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa1FQR3R3SGh6aWFJdERZVHY1S2dFb211cTY0OUJHUmlhbnlzNmJhVnJrOWliNXpNNnlyTEFHWXNkQS82NDA.png
  2. 最后结果如下

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa2dKMjVpYlZzS2t6V3lGVENZb0tZSU5VRUJXUzJUbzBsdVVNeEhkQmVSVjlDY3dVa0puVkpsOWcvNjQw.jpg


5.end

这是行哥使用Python获取所有微信好友图像组成的千图成像,看看能不能找到你哦。(什么,想要Python获取微信好友图像代码?

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy94azlvdDVzVTV6aEx3MlRma0xZUzljNlRLeFM2TXdOa3J1Y3NUN2R3RWNFenFhN0VrMHF1cnc3TWlieVFvY3pOc3RMRUlpYlVPS0Q2UXU2QXZweU9JRGh3LzY0MA.jpg


参考:https://www.cnblogs.com/awesometang/p/12013595.html


对了,可以加下行哥微信好友,私聊回复「02」可以领取5T编程资料哦

aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6amlhR3ZEeDhxUUFIQjVUOUxEaWJPWXZEakpNSks3MWEzUmRLbEdYYTNOMEpIYjN2RGlhNURLZlA2VmdSWFhGbnJZa2Q4MWxWcVlsSFBoZy82NDA.pngaHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy94azlvdDVzVTV6aWFrUEhDRzdOcWhud0pvZVl0RGxDUzFFaWNuNm9CME9VWUZUWHVraWEzeXAyeWpPSDVIcXdlYTZqNGUxUW5wNW9KYW8xdTJ1VmliTzRaV2cvNjQw.png

完整源码和软件 :在公众号【一行数据】后台回复「南山头铁鹅」可以领取

祝三连的读者马上会遇到好运!!!!!

相关文章
|
1天前
|
Python
【Python进阶(二)】——程序调试方法
【Python进阶(二)】——程序调试方法
|
1天前
|
分布式计算 调度 异构计算
Python 数学应用(四)(4)
Python 数学应用(四)
10 4
|
1天前
|
消息中间件 Kafka Python
Python 数学应用(四)(3)
Python 数学应用(四)
20 5
|
1天前
|
存储 传感器 数据可视化
Python 数学应用(四)(2)
Python 数学应用(四)
5 0
Python 数学应用(四)(2)
|
1天前
|
存储 消息中间件 Kafka
Python 数学应用(四)(1)
Python 数学应用(四)
10 2
|
1天前
|
机器学习/深度学习 存储 算法
Python 数学应用(三)(4)
Python 数学应用(三)
7 2
|
1天前
|
存储 算法 决策智能
Python 数学应用(三)(3)
Python 数学应用(三)
9 2
Python 数学应用(三)(3)
|
1天前
|
存储 资源调度 算法
Python 数学应用(三)(2)
Python 数学应用(三)
9 1
|
1天前
|
存储 机器学习/深度学习 前端开发
Python 数学应用(三)(1)
Python 数学应用(三)
11 2
|
1天前
|
数据采集 JavaScript 前端开发
Python 数学应用(二)(4)
Python 数学应用(二)
12 2