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群发邮件实例代码
Jan 03 Python
Python实现截屏的函数
Jul 25 Python
Python3实现的画图及加载图片动画效果示例
Jan 19 Python
用python求一个数组的和与平均值的实现方法
Jun 29 Python
python web框架 django wsgi原理解析
Aug 20 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
Python class的继承方法代码实例
Feb 14 Python
python实现简单井字棋小游戏
Mar 05 Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
python如何写个俄罗斯方块
Nov 06 Python
总结Python常用的魔法方法
May 25 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/02/25 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP里的单例类写法实例
2015/06/25 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
详解vue中移动端自适应方案
2019/05/05 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
Python中类的初始化特殊方法
2017/12/01 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
大学应届生的自我评价
2014/03/06 职场文书
医疗纠纷协议书
2014/04/16 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
单方投资意向书
2015/05/11 职场文书
学生会任命书范本
2015/09/21 职场文书
情况说明书怎么写
2015/10/08 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript