0

我有一个平面图图像。通过 opencv houghlines 方法,我想识别其中的墙壁。由于墙壁线条的大小大于图像中对象的线条,我想增加要搜索的线条的大小。通常,即使阈值增加,代码也会识别对象中的行。我是这个平台的新手。有人可以帮助我吗? 这是平面图图片

当我增加阈值时,一些对象线仍然存在,但墙壁上的一些线丢失了。这是我增加阈值时的结果 这是我得到的结果

这是代码:

import cv2
import numpy as np
img = cv2.imread("C:\\Users\\User\\Desktop\\tkinter_codes\\floorplans\\ROBIN\\Dataset_3roomsmall\\Cat1_1.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,900,1000,apertureSize = 5)
cv2.imshow('edges', edges)
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength=100,maxLineGap=10)
for line in lines:
    x1,y1,x2,y2 = line[0]
    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

cv2.imshow('image', img)
k = cv2.waitKey(0)
cv2.destroyAllWindows()
4

1 回答 1

0

使用形态学操作来预处理此图像。举例:

import cv2

original=cv2.imread('kDA62.jpg', cv2.IMREAD_GRAYSCALE)
se=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
opening=cv2.dilate(original,se,iterations = 1)
opening=cv2.erode(opening,se,iterations = 1)
cv2.imwrite('out_9.png', opening)

在此处输入图像描述

于 2020-05-09T08:41:10.223 回答