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

 更新时间:2020年07月16日 11:59:19   作者:繁华落尽、时光静好  
这篇文章主要介绍了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 语义图片分割内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PYQT5 实现界面的嵌套方式

    PYQT5 实现界面的嵌套方式

    这篇文章主要介绍了PYQT5 实现界面的嵌套方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 在python3中实现查找数组中最接近与某值的元素操作

    在python3中实现查找数组中最接近与某值的元素操作

    今天小编就为大家分享一篇在python3中实现查找数组中最接近与某值的元素操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python实现访问者模式详情

    Python实现访问者模式详情

    这篇文章主要介绍了Python实现访问者模式详情,访问者模式,指作用于一个对象结构体上的元素的操作。访问者可以使用户在不改变该结构体中的类的基础上定义一个新的操作,下文更多相关资料,需要的朋友可以参考下
    2022-03-03
  • python使用正则搜索字符串或文件中的浮点数代码实例

    python使用正则搜索字符串或文件中的浮点数代码实例

    这篇文章主要介绍了python使用正则搜索字符串或文件中的浮点数代码实例,同时包含一个读写到文件功能,需要的朋友可以参考下
    2014-07-07
  • Python如何把字典写入到CSV文件的方法示例

    Python如何把字典写入到CSV文件的方法示例

    这篇文章主要介绍了Python如何把字典写入到CSV文件的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python 余弦相似度与皮尔逊相关系数 计算实例

    Python 余弦相似度与皮尔逊相关系数 计算实例

    今天小编就为大家分享一篇Python 余弦相似度与皮尔逊相关系数 计算实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python使用DeepSeek进行联网搜索功能详解

    Python使用DeepSeek进行联网搜索功能详解

    Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用Python和DeepSeek进行联网搜索,感兴趣是可以了解下
    2025-03-03
  • requests.gPython 用requests.get获取网页内容为空 ’ ’问题

    requests.gPython 用requests.get获取网页内容为空 ’ ’问题

    这篇文章主要介绍了requests.gPython 用requests.get获取网页内容为空 ’ ’,温行首先举例说明,具有一定得参考价值,需要的小伙伴可以参考一下
    2022-01-01
  • Python合并pdf文件的工具

    Python合并pdf文件的工具

    PDF文件合并工具是非常好用可以把多个pdf文件合并成一个,本文以5个pdf文件为例给大家分享具体操作方法,通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-07-07
  • python数据分析之公交IC卡刷卡分析

    python数据分析之公交IC卡刷卡分析

    这篇文章主要介绍了python数据分析之公交IC卡,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04

最新评论