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的类实例属性访问规则探讨
Jan 30 Python
python简单商城购物车实例代码
Mar 15 Python
python调用百度语音识别api
Aug 30 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
python3对接mysql数据库实例详解
Apr 30 Python
python pygame实现方向键控制小球
May 17 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
python绘制封闭多边形教程
Feb 18 Python
python用opencv完成图像分割并进行目标物的提取
May 25 Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 Python
python urllib库的使用详解
Apr 13 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
一个程序下载的管理程序(一)
2006/10/09 PHP
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
js实现文字截断功能
2016/09/14 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python中subprocess模块用法实例详解
2015/05/20 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
高级运动鞋:GREATS
2019/07/19 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
幼儿园三八妇女节活动方案
2014/03/11 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
安全施工责任书
2014/08/25 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
库房管理员岗位职责
2015/02/12 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android
python微信智能AI机器人实现多种支付方式
2022/04/12 Python