python 使用递归的方式实现语义图片分割功能


Posted in Python onJuly 16, 2020

实现效果

python 使用递归的方式实现语义图片分割功能

第一张图为原图,其余的图为分割后的图形

代码实现:

# -*-coding:utf-8-*-
import numpy as np
import cv2

#----------------------------------------------------------------------
def obj_clip(img, foreground, border):
  result = []
  height ,width = np.shape(img)
  visited = set()
  for h in range(height):
    for w in range(width):
      if img[h,w] == foreground and not (h,w) in visited:
        obj = visit(img, height, width, h, w, visited, foreground, border)
        result.append(obj)
  return result
#----------------------------------------------------------------------
def visit(img, height, width, h, w, visited, foreground, border):
  visited.add((h,w))
  result = [(h,w)]
  if w > 0 and not (h, w-1) in visited:
    if img[h, w-1] == foreground: 
      result += visit(img, height, width, h, w-1, visited , foreground, border)
    elif border is not None and img[h, w-1] == border:
      result.append((h, w-1))
  if w < width-1 and not (h, w+1) in visited:
    if img[h, w+1] == foreground:
      result += visit(img, height, width, h, w+1, visited, foreground, border)
    elif border is not None and img[h, w+1] == border:
      result.append((h, w+1))
  if h > 0 and not (h-1, w) in visited:
    if img[h-1, w] == foreground:
      result += visit(img, height, width, h-1, w, visited, foreground, border)
    elif border is not None and img[h-1, w] == border:
      result.append((h-1, w))
  if h < height-1 and not (h+1, w) in visited:
    if img[h+1, w] == foreground :
      result += visit(img, height, width, h+1, w, visited, foreground, border) 
    elif border is not None and img[h+1, w] == border:
      result.append((h+1, w))
  return result
#----------------------------------------------------------------------
if __name__ == "__main__":
  import cv2
  import sys
  sys.setrecursionlimit(100000)
  img = np.zeros([400,400])
  cv2.rectangle(img, (10,10), (150,150), 1.0, 5)
  cv2.circle(img, (270,270), 70, 1.0, 5)
  cv2.line(img, (100,10), (100,150), 0.5, 5)
  #cv2.putText(img, "Martin",(200,200), 1.0, 5)
  cv2.imshow("img", img*255)
  cv2.waitKey(0)
  for obj in obj_clip(img, 1.0, 0.5):
    clip = np.zeros([400, 400])
    for h, w in obj:
      clip[h, w] = 0.2
    cv2.imshow("aa", clip*255)
    cv2.waitKey(0)

总结

到此这篇关于python 使用递归的方式实现语义图片分割的文章就介绍到这了,更多相关python 语义图片分割内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
Python的randrange()方法使用教程
May 15 Python
Python网站验证码识别
Jan 25 Python
python中模块查找的原理与方法详解
Aug 11 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
python二进制文件的转译详解
Jul 03 Python
pandas 时间格式转换的实现
Jul 06 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
Python导入模块包原理及相关注意事项
Mar 25 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 Python
Keras 使用 Lambda层详解
Jun 10 Python
Django serializer优化类视图的实现示例
Jul 16 #Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 #Python
Python实现GIF图倒放
Jul 16 #Python
浅谈python处理json和redis hash的坑
Jul 16 #Python
Python requests及aiohttp速度对比代码实例
Jul 16 #Python
Python3 搭建Qt5 环境的方法示例
Jul 16 #Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 #Python
You might like
php实现将字符串按照指定距离进行分割的方法
2015/03/14 PHP
PHP读取文件内容的五种方式
2015/12/28 PHP
学习PHP session的传递方式
2016/06/15 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
jquery中:input和input的区别分析
2011/07/13 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Python实现快速排序的方法详解
2019/10/25 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
自我鉴定书面格式
2014/01/13 职场文书
教学改革实施方案
2014/03/31 职场文书
教师一帮一活动总结
2014/07/08 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
青岛导游词
2015/02/12 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫