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中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
Python中functools模块的常用函数解析
Jun 30 Python
django之session与分页(实例讲解)
Nov 13 Python
基于Python实现的微信好友数据分析
Feb 26 Python
python 获取当天每个准点时间戳的实例
May 22 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
Python上下文管理器全实例详解
Nov 12 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
基于K.image_data_format() == 'channels_first' 的理解
Jun 29 Python
python 5个实用的技巧
Sep 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的dl函数用法实例
2014/11/06 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
javascript时区函数介绍
2012/09/14 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
实例详解Python装饰器与闭包
2019/07/29 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
python实现经纬度采样的示例代码
2020/12/10 Python
Python 多进程原理及实现
2020/12/21 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
写好求职应聘自荐信的三部曲
2013/09/21 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
自荐信的基本格式
2014/02/22 职场文书
募捐倡议书
2014/04/14 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
给客户的感谢信
2015/01/21 职场文书
运动会加油稿
2015/07/22 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL