Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5678970
  • 博文数量: 1321
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 15754
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1321)

文章存档

2020年(105)

2019年(192)

2018年(81)

2017年(80)

2016年(70)

2015年(52)

2014年(41)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: 其他平台

2020-04-27 17:02:15

目前机器人RO用的路劲规划是DWA, 类似于D*, 最短路径法。 但最好的方式是有效通道的中间位置找出来, 然后进行行进, 这样更安全。 

所以, 咨询了算法的同学, 使用图像学中的骨架化,可以解决这个问题。
代码

点击(此处)折叠或打开

  1. import numpy as np
  2.  
  3. im=cv2.imread('1.png',cv2.IMREAD_GRAYSCALE)
  4. thresh,im=cv2.threshold(im,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
  5. cv2.imshow('binary.png',im)#控制背景为黑色
  6. dst = im.copy()
  7.  
  8. num_erode = 0
  9.  
  10. while(True):
  11.     if np.sum(dst)==0:
  12.         break
  13.     kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
  14.     dst = cv2.erode(dst,kernel)
  15.     num_erode = num_erode + 1
  16.  
  17. skeleton = np.zeros(dst.shape,np.uint8)
  18.  
  19. for x in range(num_erode):
  20.     kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
  21.     dst = cv2.erode(im,kernel,None,None,x)
  22.     open_dst = cv2.morphologyEx(dst,cv2.MORPH_OPEN,kernel)
  23.     result = dst - open_dst
  24.     skeleton = skeleton + result
  25.     cv2.waitKey(1000)
  26.  
  27.  
  28. cv2.imshow('result',skeleton)
  29.  
  30. cv2.waitKey(0)
  31. cv2.destroyAllWindows()


用rect作为结构元
OK, 看图示的效果应该是可以达到我的要求, 后面有时间找个地图实测一下。
阅读(5505) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~