如何用 openCV 识别这个图上的道路的位置?

2017-11-02 22:04:54 +08:00
 woshichuanqilz

像这样的一副图片, 我想用 opencv 把道路的坐标确定出来应该怎么操作? 我从网上找了这个识别轮廓的代码,

import numpy as np
import cv2

im = cv2.imread('path.png')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

cv2.namedWindow("Contours", cv2.WINDOW_NORMAL)
cv2.imshow("Contours", im2)

cv2.drawContours(im, contours, -1, (0,255,0), 3)
cv2.drawContours(im, contours, 3, (0,255,0), 3)
cnt = contours[4]
cv2.drawContours(im, [cnt], 0, (0,255,0), 3)

# 等待键盘输入
cv2.waitKey(0)
cv2.destroyAllWindows()

得到的结果是黑的... 所以我想知道如何获取这个道路的位置。~

5000 次点击
所在节点    Python
16 条回复
justou
2017-11-02 22:20:13 +08:00
你是想把道路给分割出来么?
anmaz
2017-11-02 22:25:19 +08:00
色差没调好,你能二维化出来什么?
shijingshijing
2017-11-02 22:49:24 +08:00
你这个要 RGB 三个通道分离后做阈值处理,从路的颜色与其他物体(草地,石头等)不一样这个思路入手
hunk
2017-11-02 22:50:59 +08:00
大胆猜测下,这要是做外挂吗?
wcsjtu
2017-11-02 23:13:30 +08:00
阈值不对? 实在不行腐蚀膨胀一下再提取

。。。。。。
其实我是瞎 bb 的-.-!
zhusimaji
2017-11-02 23:24:24 +08:00
你这是通过找连通域来定位路,这个可以,但是你二值化应该有问题。可以尝试边缘检测定位路,常见的道路检测也是这个原理。从计算机视觉跳到大数据,好久不弄快忘记了
wdlth
2017-11-02 23:38:11 +08:00
可以用直方图均衡把图片对比度弄高点,通过连通区域检测,应该可以分离出几处独立的区域。
silencefent
2017-11-03 09:13:58 +08:00
暗黑三诶?
woshichuanqilz
2017-11-03 10:21:09 +08:00
@justou 对的是要分离道路。
woshichuanqilz
2017-11-03 10:21:35 +08:00
@anmaz 谢谢 我看下怎么调色差。
woshichuanqilz
2017-11-03 10:22:18 +08:00
@shijingshijing 其实我觉得就是找出路的颜色然后在图里面做对比是比较好的。 但是不知道怎么做。
woshichuanqilz
2017-11-03 10:23:04 +08:00
@hunk 自己玩的, 最近玩了玩暗黑 2, 点鼠标太累了, 就想电脑能不能做, 自己娱乐用的, 做外挂要是我这个技术也不用干了 : D
woshichuanqilz
2017-11-03 10:23:35 +08:00
@wcsjtu ~~ 我试下, 主要这个不怎么懂, 就看了一下午教程一头雾水哈哈
woshichuanqilz
2017-11-03 11:18:42 +08:00
@zhusimaji 谢谢 我再研究一下边缘检测
@wdlth 好的 谢谢
zhusimaji
2017-11-03 11:42:19 +08:00
@wdlth
@woshichuanqilz
类似图像增强的方法都可以考虑
NoAnyLove
2017-11-04 01:34:46 +08:00
转成 gray 之后保存下来,用类似 PS 的软件打开,可以看到路的颜色范围其实比较大,而且范围和其他区域有重叠,所以直接用 threshold 的效果不太好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/403071

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX