考虑上面的图像,它用作环境地图。 每条黑线表示"墙"。
问题是使用一系列Forward
,TurnRight
和TurnLeft
动作使模拟机器人(直径10像素)到达右下方的黄色框。向前移动机器人5 px;每个转弯动作将机器人方向改变30度。
(200 px X 200 px)
。(x, y)
和方向(theta = pi/2.0
)开始。 (x, y)
坐标和方向(theta
)。鉴于机器人(x, y)
的当前位置,我需要找到所有4个方向上距离最近的墙壁的距离。
如何使用OpenCV函数确定距离?
(我现在才开始使用OpenCV / vision。)
编辑1:
以下是我的尝试:
(1)获取"墙壁"单独:
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if any(img[i,j] == 255):
gs_black[i,j] = [255,255,255]
else:
gs_black[i,j] = [0,0,0]
这给了我:
(2)获取墙壁的像素位置
walls = []
for i in range(img.shape[0]):
for j in range(img.shape[1]):
if all(img[i,j] == 0):
walls.append([i, j])
编辑2:
基于@Miki的建议,试图获得距离变换
thresh = cv2.threshold(gs_img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
from skimage.feature import peak_local_max
from skimage.morphology import watershed
from scipy import ndimage
D = ndimage.distance_transform_edt(thresh)
可视化变换给出:
现在,我不知道如何改变这个变换值。