5行Python代码实现图像分割的步骤详解


Posted in Python onMay 25, 2020

众所周知图像是由若干有意义的像素组成的,图像分割作为计算机视觉的基础,对具有现有目标和较精确边界的图像进行分割,实现在图像像素级别上的分类任务。

5行Python代码实现图像分割的步骤详解

图像分割可分为语义分割和实例分割两类,区别如下:

  • 语义分割:将图像中每个像素赋予一个类别标签,用不同的颜色来表示;
  • 实例分割:无需对每个像素进行标记,只需要找到感兴趣物体的边缘轮廓。

图像分割通常应用如下所示:

  • 专业检测:应用于专业场景的图像分析,比如在卫星图像中识别建筑、道路、森林,或在医学图像中定位病灶、测量面积等;
  • 智能交通:识别道路信息,包括车道标记、交通标志等。

本博客主要通过PixelLib模块帮助用户快速便捷实现图像分割。

5行Python代码实现图像分割的步骤详解

1、环境部署

在进行项目设计前,需要安装所需的第三方库文件:TensorFlow、Pillow、OpenCV-Python、scikit-image和PixelLib,指令如下所示:

pip install tensorflow
pip install pillow
pip install opencv-python
pip install scikit-image
pip install pixellib

2、语义分割

PixelLib使用Deeplabv3+框架实现语义分割,在pascalvoc数据集上训练的Xception模型用于语义分割。

第1步:导入PixelLib模块,代码如下所示:

import pixellib
from pixellib.semantic import semantic_segmentation

第2步:创建用于执行语义分割的类实例,代码如下所示:

segment_image = semantic_segmentation()

第3步:调用load_pascalvoc_model()函数加载在Pascal voc上训练的Xception模型,代码如下所示:

segment_image.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5")

第4步:调用segmentAsPascalvoc()函数对图像进行分割,并且分割采用pascalvoc的颜色格式进行。此函数有两个必选参数:

  • path_to_image:分割的目标图像的路径;
  • path_to_output_image:保存分割后输出图像的路径。

将路径替换为自己环境路径即可,代码如下所示:

segment_image.segmentAsPascalvoc("path_to_image", output_image_name = "path_to_output_image")

上传图像,语义分割后效果如下所示:

5行Python代码实现图像分割的步骤详解

也可以生成了带有分段叠加层的图像,只需要将segmentAsPascalvoc()函数的overlay属性设置为True,代码如下所示:

segment_image.segmentAsPascalvoc("sample1.jpg", output_image_name = "image_new.jpg", overlay = True)

分段叠加层效果如下所示:

5行Python代码实现图像分割的步骤详解

3、即时分割

PixelLib的实例分割基于MaskRCNN框架实现,也仅需5行Python代码实现。

第1步:导入PixelLib模块,代码如下所示:

import pixellib
from pixellib.instance import instance_segmentation

第2步:导入用于执行实例细分的类并创建该类的实例,代码如下所示:

segment_image = instance_segmentation()

第3步:调用load_model()函数加载Mask RCNN模型以执行实例分割的代码,代码如下所示:

segment_image.load_model("mask_rcnn_coco.h5")

第4步:调用segmentImage()函数对图像执行实例分割。此函数有两个必选参数:

  • path_to_image:模型要预测的图像的路径;
  • output_image_name:保存分割结果的路径。

将路径替换为自己环境路径即可,代码如下所示:

segment_image.segmentImage("path_to_image", output_image_name = "output_image_path")

上传图像,即时分割后效果如下所示:

5行Python代码实现图像分割的步骤详解

也可以生成分割蒙版边界框,只需要将show_bboxes()函数的overlay属性设置为True,代码如下所示:

segment_image.segmentImage("sample2.jpg", output_image_name = "image_new.jpg", show_bboxes = True)

生成分割蒙版边界框效果如下所示:

5行Python代码实现图像分割的步骤详解

到此这篇关于5行Python代码实现图像分割的步骤详解的文章就介绍到这了,更多相关Python 图像分割内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python返回真假值(True or False)小技巧
Apr 10 Python
Python实现按中文排序的方法示例
Apr 25 Python
python Spyder界面无法打开的解决方法
Apr 27 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
分享PyCharm的几个使用技巧
Nov 10 Python
Python实现SMTP邮件发送
Jun 16 Python
如何通过命令行进入python
Jul 06 Python
python中绕过反爬虫的方法总结
Nov 25 Python
python 批量将中文名转换为拼音
Feb 07 Python
python 实现Requests发送带cookies的请求
Feb 08 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 #Python
keras .h5转移动端的.tflite文件实现方式
May 25 #Python
Python虚拟环境venv用法详解
May 25 #Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 #Python
tensorflow转换ckpt为savermodel模型的实现
May 25 #Python
基于Python把网站域名解析成ip地址
May 25 #Python
使用keras和tensorflow保存为可部署的pb格式
May 25 #Python
You might like
php发送html格式文本邮件的方法
2015/06/10 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
jQuery中判断对象是否存在的方法汇总
2016/02/24 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
js实现延迟加载的几种方法详解
2019/01/19 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python简单实现计算过期时间的方法
2015/06/09 Python
matplotlib中legend位置调整解析
2017/12/19 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
详解python tkinter 图片插入问题
2020/09/03 Python
Python中return函数返回值实例用法
2020/11/19 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
《理想》教学反思
2014/02/17 职场文书
廉洁自律承诺书
2014/03/27 职场文书
初中学校军训方案
2014/05/09 职场文书
爬山的活动方案
2014/08/16 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记