像这样的一副图片, 我想用 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()
得到的结果是黑的... 所以我想知道如何获取这个道路的位置。~
1
justou 2017-11-02 22:20:13 +08:00
你是想把道路给分割出来么?
|
2
anmaz 2017-11-02 22:25:19 +08:00 via Android
色差没调好,你能二维化出来什么?
|
3
shijingshijing 2017-11-02 22:49:24 +08:00 1
你这个要 RGB 三个通道分离后做阈值处理,从路的颜色与其他物体(草地,石头等)不一样这个思路入手
|
4
hunk 2017-11-02 22:50:59 +08:00
大胆猜测下,这要是做外挂吗?
|
5
wcsjtu 2017-11-02 23:13:30 +08:00
阈值不对? 实在不行腐蚀膨胀一下再提取
。。。。。。 其实我是瞎 bb 的-.-! |
6
zhusimaji 2017-11-02 23:24:24 +08:00 via iPhone
你这是通过找连通域来定位路,这个可以,但是你二值化应该有问题。可以尝试边缘检测定位路,常见的道路检测也是这个原理。从计算机视觉跳到大数据,好久不弄快忘记了
|
7
wdlth 2017-11-02 23:38:11 +08:00 via Android
可以用直方图均衡把图片对比度弄高点,通过连通区域检测,应该可以分离出几处独立的区域。
|
8
silencefent 2017-11-03 09:13:58 +08:00
暗黑三诶?
|
9
woshichuanqilz OP @justou 对的是要分离道路。
|
10
woshichuanqilz OP @anmaz 谢谢 我看下怎么调色差。
|
11
woshichuanqilz OP @shijingshijing 其实我觉得就是找出路的颜色然后在图里面做对比是比较好的。 但是不知道怎么做。
|
12
woshichuanqilz OP @hunk 自己玩的, 最近玩了玩暗黑 2, 点鼠标太累了, 就想电脑能不能做, 自己娱乐用的, 做外挂要是我这个技术也不用干了 : D
|
13
woshichuanqilz OP @wcsjtu ~~ 我试下, 主要这个不怎么懂, 就看了一下午教程一头雾水哈哈
|
14
woshichuanqilz OP |
15
zhusimaji 2017-11-03 11:42:19 +08:00
|
16
NoAnyLove 2017-11-04 01:34:46 +08:00
转成 gray 之后保存下来,用类似 PS 的软件打开,可以看到路的颜色范围其实比较大,而且范围和其他区域有重叠,所以直接用 threshold 的效果不太好。
|