通过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 类与元类的深度挖掘 II【经验】
May 06 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
Python实现的特征提取操作示例
Dec 03 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
解析Python的缩进规则的使用
Jan 16 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
python利用faker库批量生成测试数据
Oct 15 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 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
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
php多线程并发实现方法
2016/09/30 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
javascript 表单的友好用户体现
2009/01/07 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
Python中为什么要用self探讨
2015/04/14 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
python正则表达式面试题解答
2020/04/28 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
省级四好少年事迹材料
2014/01/25 职场文书
门前三包责任书
2014/04/15 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
社区党员公开承诺书
2014/08/30 职场文书