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 简单备份文件脚本v1.0的实例
Nov 06 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
python logging日志模块原理及操作解析
Oct 12 Python
python实现音乐播放器 python实现花框音乐盒子
Feb 25 Python
解决Keras自带数据集与预训练model下载太慢问题
Jun 12 Python
python如何提升爬虫效率
Sep 27 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
如何使用pdb进行Python调试
Jun 30 Python
Python使用OpenCV实现虚拟缩放效果
Feb 28 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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版(3)
2006/10/09 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
10个实用的脚本代码工具
2010/05/04 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python OpenCV获取视频的方法
2018/02/28 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
印度购物网站:TATA CLiQ
2017/11/23 全球购物
信息技术专业个人自我评价
2013/12/11 职场文书
课程设计心得体会
2013/12/28 职场文书
五一手机促销方案
2014/03/08 职场文书
活动总结报告格式
2014/05/09 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
倡议书作文
2015/01/19 职场文书
死亡诗社观后感
2015/06/05 职场文书