通过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中指定元素生成excle文件示例
Apr 03 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
Python urllib.request对象案例解析
May 11 Python
Python常见反爬虫机制解决方案
Jun 01 Python
python新手学习可变和不可变对象
Jun 11 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 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/09/30 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
python获得图片base64编码示例
2014/01/16 Python
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
Python编程中的文件操作攻略
2015/10/16 Python
Python科学计算之Pandas详解
2017/01/15 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
经济学博士求职自荐信范文
2013/11/23 职场文书
五一家具促销方案
2014/01/10 职场文书
大学社团活动策划书
2014/01/26 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
Python基础之Socket通信原理
2021/04/22 Python
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
python实现简单的三子棋游戏
2022/04/28 Python