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

 更新时间:2019年06月26日 09:36:53   作者:白包子  
这篇文章主要介绍了通过PYTHON来实现图像分割详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

程序思路:

此次程序主要是利用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库的使用

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

相关文章

  • 手把手教你用322行Python代码编写贪吃蛇游戏

    手把手教你用322行Python代码编写贪吃蛇游戏

    最近在学Python,想做点什么来练练手,命令行的贪吃蛇一般是C的练手项目,但是一时之间找不到别的,就先做个贪吃蛇来练练简单的语法,下面这篇文章主要给大家介绍了关于如何用322行Python代码编写贪吃蛇游戏的相关资料,需要的朋友可以参考下
    2023-02-02
  • Python中Pytest测试框架的fixture使用详解

    Python中Pytest测试框架的fixture使用详解

    这篇文章主要介绍了Python中Pytest测试框架的fixture使用详解,Pytest的fixture的目的是提供一个测试的基线,在此基线基础上,可以更可靠的进行重复测试,需要的朋友可以参考下
    2023-08-08
  • 详解Python+Selenium+ChromeDriver的配置和问题解决

    详解Python+Selenium+ChromeDriver的配置和问题解决

    这篇文章主要介绍了Python+Selenium+ChromeDriver的配置和问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python生成器用法实例详解

    python生成器用法实例详解

    这篇文章主要介绍了python生成器用法,结合实例形式详细分析了Python生成器相关原理、创建、使用方法及操作注意事项,需要的朋友可以参考下
    2019-11-11
  • python畅玩os模块以及顺便批量修改图片尺寸

    python畅玩os模块以及顺便批量修改图片尺寸

    这篇文章主要介绍了python畅玩os模块以及顺便批量修改图片尺寸方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • python中创建一个包并引用使用的操作方法

    python中创建一个包并引用使用的操作方法

    python包在开发中十分常见,一般通过导入包含特定功能的python模块包进行使用。当然,也可以自己创建打包模块,然后发布,安装使用,这篇文章主要介绍了python中如何创建一个包并引用使用,需要的朋友可以参考下
    2022-08-08
  • 基于python+selenium的二次封装的实现

    基于python+selenium的二次封装的实现

    这篇文章主要介绍了基于python+selenium的二次封装的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • python 根据pid杀死相应进程的方法

    python 根据pid杀死相应进程的方法

    下面小编就为大家带来一篇python 根据pid杀死相应进程的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • python socket模块创建和使用套接字示例详解

    python socket模块创建和使用套接字示例详解

    这篇文章主要为大家介绍了python socket模块来创建和使用套接字示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 解决Pycharm后台indexing导致不能run的问题

    解决Pycharm后台indexing导致不能run的问题

    今天小编就为大家分享一篇解决Pycharm后台indexing导致不能run的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论