通过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 相关文章推荐
wxPython学习之主框架实例
Sep 28 Python
Python+Wordpress制作小说站
Apr 14 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
Python实现的购物车功能示例
Feb 11 Python
python使用webdriver爬取微信公众号
Aug 31 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 Python
Python 处理图片像素点的实例
Jan 08 Python
python获取地震信息 微信实时推送
Jun 18 Python
Python八皇后问题解答过程详解
Jul 29 Python
pycharm设置当前工作目录的操作(working directory)
Feb 14 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 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获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
js身份证验证超强脚本
2008/10/26 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python实现以时间换空间的缓存替换算法
2016/02/19 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
Python的collections模块真的很好用
2021/03/01 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
《她是我的朋友》教学反思
2014/04/26 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers