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绘图库Matplotlib的安装
Jul 03 Python
python使用BeautifulSoup分析网页信息的方法
Apr 04 Python
在Python中使用正则表达式的方法
Aug 13 Python
玩转python爬虫之正则表达式
Feb 17 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
浅谈dataframe中更改列属性的方法
Jul 10 Python
对Python中Iterator和Iterable的区别详解
Oct 18 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
python接入支付宝的实例操作
Jul 20 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
使用python创建股票的时间序列可视化分析
Mar 03 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
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
js实现选项卡效果
2020/03/07 Javascript
浅谈python多线程和队列管理shell程序
2015/08/04 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
css3 transform属性详解
2014/09/30 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
晚宴邀请函范文
2014/01/15 职场文书
上课打牌的检讨书
2014/02/15 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
校车司机安全责任书
2015/05/11 职场文书
辛亥革命观后感
2015/06/02 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers