python实现拼接图片


Posted in Python onMarch 23, 2020

最近在写一篇卷积神经网络的论文,有好多实验结果需要整理,本来是用美图秀秀进行图像的拼接,但是发现重复操作太多,而且拼接效果不好,想到用python写个脚本实现,看一个简单的例子:

python实现拼接图片

横向拼接

首先我需要将同一张图片的变形拼接为一行,代码如下:

import os
from PIL import Image

UNIT_SIZE = 229 # 单个图像的大小为229*229
TARGET_WIDTH = 6 * UNIT_SIZE # 拼接完后的横向长度为6*229

path = "C:/Users/zm/Desktop/FinalResult/Other-Reconstruction/2"
images = [] # 先存储所有的图像的名称
for root, dirs, files in os.walk(path):  
 for f in files :
  images.append(f)
for i in range(len(images)/6): # 6个图像为一组
 imagefile = []
 j = 0
 for j in range(6):
  imagefile.append(Image.open(path+'/'+images[i*6+j])) 
 target = Image.new('RGB', (TARGET_WIDTH, UNIT_SIZE)) 
 left = 0
 right = UNIT_SIZE
 for image in imagefile:  
  target.paste(image, (left, 0, right, UNIT_SIZE))# 将image复制到target的指定位置中
  left += UNIT_SIZE # left是左上角的横坐标,依次递增
  right += UNIT_SIZE # right是右下的横坐标,依次递增
  quality_value = 100 # quality来指定生成图片的质量,范围是0~100
  target.save(path+'/result/'+os.path.splitext(images[i*6+j])[0]+'.jpg', quality = quality_value)
 imagefile = []

纵向拼接

将每种类型的图片拼接为一行六个的图片后再将这些图片纵向拼接在一起,总共3种图像,那么有3行

import os
from PIL import Image

UNIT_SIZE = 229 # 图像的高
TARGET_WIDTH = 6 * UNIT_SIZE # 一行有6个图像,那么是6*229那么宽

path = "C:/Users/zm/Desktop/FinalResult/Other-Reconstruction/2/result"
imagefile = [] 
for root, dirs, files in os.walk(path):  
 for f in files :
  imagefile.append(Image.open(path+'/'+f)) 
target = Image.new('RGB', (TARGET_WIDTH, UNIT_SIZE*3)) # 最终拼接的图像的大小为(229*3) * (229*6)
left = 0
right = UNIT_SIZE
for image in imagefile:  
 target.paste(image, (0, left, TARGET_WIDTH, right))
 left += UNIT_SIZE # 从上往下拼接,左上角的纵坐标递增
 right += UNIT_SIZE #左下角的纵坐标也递增 
 quality_value = 100
 target.save(path+'/result.jpg', quality = quality_value)

同时横向纵向拼接

今天需要处理的图片如下:左边是图片所在的文件夹,每个文件夹的图片如→_→右边所示,需要拼接为2*5的图片。

python实现拼接图片

写的脚本如下:

import os
from PIL import Image

UNIT_SIZE = 229 # the size of image 
def pinjie(images,num):
 target = Image.new('RGB', (UNIT_SIZE*5, UNIT_SIZE*2)) # result is 2*5
 leftone = 0
 lefttwo = 0
 rightone = UNIT_SIZE
 righttwo = UNIT_SIZE
 for i in range(len(images)):
  if(i%2==0):
   target.paste(images[i], (leftone, 0, rightone, UNIT_SIZE))
   leftone += UNIT_SIZE #第一行左上角右移
   rightone += UNIT_SIZE #右下角右移
  else:
   target.paste(images[i], (lefttwo, UNIT_SIZE, righttwo, UNIT_SIZE*2))
   lefttwo += UNIT_SIZE #第二行左上角右移
   righttwo += UNIT_SIZE #右下角右移 
 quality_value = 100
 target.save(path+dirlist[num]+'.jpg', quality = quality_value)

path = "C:/Users/laojbdao/Desktop/FinalResult/result4/different_distribution/"
dirlist = [] # all dir name
for root, dirs, files in os.walk(path):  
 for dir in dirs :
  dirlist.append(dir)

num = 0
for dir in dirlist:
 images = [] # images in each folder
 for root, dirs, files in os.walk(path+dir): # traverse each folder
  print path+dir+''
  for file in files:
   images.append(Image.open(path+dir+'/'+file))
 pinjie(images,num)
 num +=1
 images = []

python实现拼接图片

本文已被收录到专题《python图片处理操作》 ,欢迎大家点击学习更多精彩内容。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中global用法实例分析
Apr 30 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
Python实现带参数与不带参数的多重继承示例
Jan 30 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
实例介绍Python中整型
Feb 11 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
python标识符命名规范原理解析
Jan 10 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
PyTorch 导数应用的使用教程
Aug 31 Python
详解torch.Tensor的4种乘法
Sep 03 Python
python使用PIL剪切和拼接图片
Mar 23 #Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 #Python
python实现单张图像拼接与批量图片拼接
Mar 23 #Python
OpenCV Python实现拼图小游戏
Mar 23 #Python
PYcharm 激活方法(推荐)
Mar 23 #Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 #Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 #Python
You might like
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
Smarty3配置及入门语法
2017/02/22 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
JS模拟多线程
2007/02/07 Javascript
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
js中less常用的方法小结
2017/08/09 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
原生JS实现多条件筛选
2020/08/19 Javascript
Python程序语言快速上手教程
2012/07/18 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Python 中Pickle库的使用详解
2018/02/24 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
python 制作本地应用搜索工具
2021/02/27 Python
医学院四年学习生活的自我评价
2013/11/06 职场文书
安全生产管理责任书
2014/04/16 职场文书
投资协议书范本
2014/04/21 职场文书
电力工程合作意向书
2015/05/11 职场文书