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编写分析Python程序性能的工具的教程
Apr 01 Python
Python中random模块用法实例分析
May 19 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
Face++ API实现手势识别系统设计
Nov 21 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
python中while和for的区别总结
Jun 28 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
通过python3实现投票功能代码实例
Sep 26 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
详解python中的lambda与sorted函数
Sep 04 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
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
PHP防止跨域提交表单
2013/11/01 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
关于全局变量和局部变量的那些事
2013/01/11 Javascript
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
Python3中多线程编程的队列运作示例
2015/04/16 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
Python分析学校四六级过关情况
2017/11/22 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
python 实现线程之间的通信示例
2020/02/14 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
车工岗位职责
2013/11/26 职场文书
文字自荐书范文
2014/02/10 职场文书
领导干部作风建设总结
2014/10/23 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
无线电知识基础入门篇
2022/02/18 无线电