通过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检测远程端口是否打开的方法
Mar 14 Python
Python实现获取操作系统版本信息方法
Apr 08 Python
在Python中使用NLTK库实现对词干的提取的教程
Apr 08 Python
python使用nntp读取新闻组内容的方法
May 08 Python
Python set常用操作函数集锦
Nov 15 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 Python
Python之pymysql的使用小结
Jul 01 Python
通过实例解析Python调用json模块
Dec 11 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
Python 安装 virturalenv 虚拟环境的教程详解
Feb 21 Python
python基于opencv批量生成验证码的示例
Apr 28 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
php 启动报错如何解决
2014/01/17 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
js三种排序算法分享
2012/08/16 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
初识Node.js
2015/03/20 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
Python三元运算实现方法
2015/01/12 Python
详解Python中的文件操作
2016/08/28 Python
python连接mysql实例分享
2016/10/09 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Python3.8中使用f-strings调试
2019/05/22 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
宿舍使用违章电器检讨书
2014/01/12 职场文书
毕业生实习证明
2014/09/19 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
病人慰问信范文
2015/02/15 职场文书
任命书格式范文
2015/09/22 职场文书