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以环状形式组合排列图片并输出的方法
Mar 17 Python
Python中处理时间的几种方法小结
Apr 09 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
Python使用回溯法子集树模板解决迷宫问题示例
Sep 01 Python
Python的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
Django model 中设置联合约束和联合索引的方法
Aug 06 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
利用Opencv实现图片的油画特效实例
Feb 28 Python
Python道路车道线检测的实现
Jun 27 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 cookies中删除的一般赋值方法
2011/05/07 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
关于session和cookie的简单理解
2016/06/08 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
原生js封装运动框架的示例讲解
2017/10/01 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
实习护理工作自我评价
2013/09/25 职场文书
酒吧副总经理岗位职责
2013/12/10 职场文书
大四学生思想汇报
2014/01/13 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
教师节促销活动方案
2014/02/14 职场文书
保密普查工作实施方案
2014/02/25 职场文书
农村文化活动总结
2014/08/28 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
技术转让协议书
2016/03/19 职场文书