python三维数据转换成二维_用Python生成马赛克画
大家知道马赛克画是什么吗?不是动作片里的马赛克哦~~
马赛克画是一张由小图拼成的大图,本文的封面就是我们的效果图,放大看细节,每一块都是一张独立的图片,拼在一起组成一张大图,感觉像是用马赛克拼出来的画,所以叫马赛克画。看到网上的一些马赛克画觉得很酷,于是自己用Python实现了一下将一张原图转换成马赛克画。
封面的原图是这样的
实现的具体思路是这样
第一步:首先收集一组图片,这些图片会作为大图中的小方格图片。图片越多,最后生成的图片颜色越接近。
第二步:将要转换的图片分割成一个一个小方格图片,像下面这样
第三步:对于每一个小方格图片,取图片集里面最接近的图片替换。所有小方格都替换后,就生成了我们最终的马赛克画。
听上去是不是很简单?
我们的图片集存在images目录下,下面的代码加载目录下所有的图片,并缩放成统一的尺寸
import
这里load_all_images函数的参数就是统一后的尺寸,tile_row和tile_col分别对应高和宽。
下面的代码对要转换的图片进行分割
img
我们将要转换的图片分割成一个个小方格,tile_row和tile_col是小方格的高和宽,roi存取小方格中的图片数据。
下面是计算两张图片相似度的函数
from
im1和im2是两张图片的数据,图片数据是一个三维的numpy数组,这里我们将三维数组转换成一维数组后,比较两者的欧式距离。之后要找出最相似的图片,只需遍历图片集中所有的图片,找到距离最短的那张图片,去替换原图中的小方格就可以了。
我们再来看一下最终实现的效果
放大图中局部的细节如下
如果对图片的画质不满意,想要更精细的画质,可以考虑在分割的时候把图片分割成更小的方格,不过这样也会增加程序运行的时间。
生成图片的过程比较耗时,考虑到性能原因,原程序中使用多进程的方式并行处理。
python三维数据转换成二维_用Python生成马赛克画相关推荐
- python三维数据转换成二维_5大Python可视化库到底选哪个好?一篇文章搞定从选库到教学...
最近和鲸社区的大佬们,竟不约而同地写起了可视化库的教程,开始了掰头 ※完整教程列表在文末附录 虽然对于我们这种吃瓜群众来说是件好事,但 大概大佬的快乐往往就是那么的朴实无华且枯燥吧.害,管他呢,赶紧拿 ...
- python三维数据转换成二维_Python = 48/365
● Python = 48/365 ● 有了数据就有了一切!回到枯燥而重要的数据部分.数据有趣吗?当然,当然.今日结合图像处理来个硬货! 日更不停,你看行不行? 我带着你,你带着Python Flag ...
- python三维数据转换成二维_Python科学计算全生态工具锦集
没关注? 伸出手指点这里 AI Python目前是与科学计算结合最好的一门编程语言,包括大数据分析.机器学习.人工智能.可视化,甚至是天文学.生物学(神经科学).量子力学等等都有强大的工具包支持 P ...
- 数据转换成二维码并导出进Excel中和导入时解码二维码反转成数据
数据转换成二维码并导出进Excel中和导入时解码二维码反转成数据 第一步在maven中配置需要的二维码jar包 1.1 谷歌提供的帮助类 1.2 关于二维码的工具类 1.3 测试类 第二步 在Exce ...
- xlsx.full.js读取Excel数据转换成二维数组,sheet_to_array
xlsx.full.js读取Excel的sheet数据转换成二维数组,sheet_to_array 解析sheet数据为二维数组 测试方法 效果 鉴于js-xlsx.js没有XLSX.util.she ...
- python将文件数据转换成二维列表
贴一个做数据清洗时写的代码, 做数据处理时,原文件数据在进行处理时需要转换成一定格式, 原始文件数据:123.txt 1,3,4 2,3,5 1,2,3,5 2,5 利用Python转换成二维列表: ...
- Python 将Excel一维数据转换成二维数据透视表
目录 目的 操作步骤 创建文件目标文件并放置在对应目标文件夹 打开JupyterNotebook 步骤1:在 D:\ProgramProject\JupyterNotebook\dealExcel 步 ...
- 一连串数字怎么转换成二维码?数字生成二维码如何制作?
当我们使用二维码内容做成数字时该如何制作呢,比如做成标签码,序号码,号码牌等等,都可以使用数字二维码来展示,那么如何操作才能将一连串数字做成二维码呢?下面给大家分享一下数字静态二维码和数字微信活码的制 ...
- python 三维矩阵乘以二维矩阵_如何将一个二维数组和一个三维数组矩阵相乘得到一个三维数组?...
问题是numpy把多维数组看作矩阵的栈,最后两个维总是假定为线性空间维.这意味着点积不能通过折叠3d数组的第一个维度来工作.在 相反,你能做的最简单的事情就是把你的3d数组重塑成2d数组,做矩阵乘法, ...
最新文章
- 800名科学家Nature联名发文主张废除p值!
- python scapy 函数_【python|scapy】sprintf输出时raw_string转string
- 2高并发服务器:多线程服务器
- bool类型数组转换成一个整数_Go 学习笔记 02 | 基本数据类型以及 byte 和 rune 类型...
- HBase 架构详解
- linux 必知命令
- 实训汇编语言设计——内存多字节10进制数相加
- 互联网的未来之下:政权 金权 人权 无关平权
- 受控文本生成任务简述
- python中itertools groupby函数是干嘛的_python 分组函数 itertools groupby
- [ABAP] Debug心得
- java asm 中文文档_ASM 简介
- Java版2048小游戏
- 微信小程序转发功能详解
- 从汉语与英语最常用字词,分析汉语与英语的异同(一)
- WINDOWS 2003设置攻略
- 2019前端工程师的自检清单
- 力扣(Leetcode)695. 岛屿的最大面积(Java)带注释
- iphone6 触摸屏测试软件,iPhone 6 触摸屏 “乱跳” 维修案例
- 淘宝新手开店不使用直通车,应该怎么去进行做呢?