通过PYTHON来实现图像分割详解


Posted in Python onJune 26, 2019

程序思路:

此次程序主要是利用PIL(Python Image Libraty)这库,来进行图片的处理。

PIL是一个功能非常强大的python图像处理标准库,但由于PIL只支持python2.7。如今很多python程序员都使用python3.x,所以PIL在之前的基础上分离出来一个分支,另外创建一个Pillow库,以便支持python3.x, 本程序在使用之前确保已经安装了Pillow库。

程序首先把你要分隔的图像读取到一个变量中,然后我们定义了一个 fill_image() 方法,用来填充图像让原本大小不一的图像,重新变为一个长宽相同的正方形图像,方便之后处理。

通过 fill_image() 方法,我们就会得到新的一张正方形图像。随后我们在利用 cut_image() 方法,把图像分隔成 9 张,因为微信朋友圈最多发 9张图片。

from PIL import Image
import sys
#先将 input image 填充为正方形
def fill_image(image):
  width, height = image.size
  #选取长和宽中较大值作为新图片的
  new_image_length = width if width > height else height
  #生成新图片[白底]
  new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')  #注意这个函数!
  #将之前的图粘贴在新图上,居中
  if width > height:#原图宽大于高,则填充图片的竖直维度 #(x,y)二元组表示粘贴上图相对下图的起始位置,是个坐标点。
    new_image.paste(image, (0, int((new_image_length - height) / 2)))
  else:
    new_image.paste(image, (int((new_image_length - width) / 2),0))
  return new_image
def cut_image(image):
  width, height = image.size
  item_width = int(width / 3) #因为朋友圈一行放3张图。
  box_list = []
  # (left, upper, right, lower)
  for i in range(0,3):
    for j in range(0,3):
      #print((i*item_width,j*item_width,(i+1)*item_width,(j+1)*item_width))
      box = (j*item_width,i*item_width,(j+1)*item_width,(i+1)*item_width)
      box_list.append(box)
  image_list = [image.crop(box) for box in box_list]
  return image_list
#保存
def save_images(image_list):
  index = 1
  for image in image_list:
    image.save(str(index) + '.png', 'PNG')
    index += 1
if __name__ == '__main__':
  file_path = "2.jpg" #图片保存的地址
  image = Image.open(file_path)
  #image.show()
  image_new = fill_image(image)
  image_list = cut_image(image_new)
  save_images(image_list)

如果有兴趣的话可以看一看Pillow库的使用

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

Python 相关文章推荐
python对html代码进行escape编码的方法
May 04 Python
Python中的random()方法的使用介绍
May 15 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
python实现媒体播放器功能
Feb 11 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
python3 sorted 如何实现自定义排序标准
Mar 12 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 Python
用python批量解压带密码的压缩包
May 31 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 #Python
如何使用Python实现自动化水军评论
Jun 26 #Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 #Python
Python 数据可视化pyecharts的使用详解
Jun 26 #Python
python 实现交换两个列表元素的位置示例
Jun 26 #Python
python之信息加密题目详解
Jun 26 #Python
实例详解Python模块decimal
Jun 26 #Python
You might like
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
python list语法学习(带例子)
2013/11/01 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
python写一个md5解密器示例
2018/02/23 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
python3 下载网络图片代码实例
2019/08/27 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
报关简历自我评价怎么写
2013/09/19 职场文书
会计毕业生自荐信
2013/11/21 职场文书
股权转让意向书
2014/04/01 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python
Tomcat配置访问日志和线程数
2022/05/06 Servers