У меня есть изображение аэрофотосъемки Аэрофотоснимок .
Мне нужно использовать OpenCV и Python, чтобы найти дороги на нем. Я использовал сегментацию в пространстве HSV, чтобы избавиться от ненужных частей изображения, затем применил MorphologyEx и в итоге получил Изображение MorphologyEx . Что мне делать дальше, чтобы найти правильную дорогу на этом изображении?
Мой код:
while(True):
ret, frame = cap.read()
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
imgHsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
mask = cv.inRange(imgHsv, (21, 0, 0), (35, 225, 225))
imask = mask > 0
roads = np.zeros_like(frame, np.uint8)
roads[imask] = frame[imask]
#bluredRoadsMask = cv.medianBlur(roads, 7)
grayRoads = cv.cvtColor(roads, cv.COLOR_BGR2GRAY)
phi = 1
theta = 1
maxIntensity = 255.0
newImage = (maxIntensity/phi) * (grayRoads/(maxIntensity/theta))**2
newImage = np.array(newImage, dtype=np.uint8)
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (7, 7))
# cross = cv.getStructuringElement(cv.MORPH_CROSS, (3, 3))
morphologyImg = cv.dilate(newImage, kernel, iterations=2)
_, roadsThresh = cv.threshold(morphologyImg, 30, 225, cv.THRESH_BINARY)
gaus_blur = cv.GaussianBlur(roadsThresh, (5, 5), 3, 3)
erodeImg = cv.erode(gaus_blur, kernel, iterations=1)
morphExImage = cv.morphologyEx(erodeImg, cv.MORPH_DILATE, kernel)
roadsEdges = cv.Canny(morphExImage, 0, 0, apertureSize= 3)
lines = cv.HoughLinesP(roadsEdges, 0.05, np.pi / 180, 0, 40, 1)
# for x in range(0, len(lines)):
# for x1, y1, x2, y2 in lines[x]:
# cv.line(frame, (x1, y1), (x2, y2), (0, 0, 255), 3)
# cv.imshow("roads", linesImage)
cv.imshow("HSV Segmentation", morphExImage)
# cv.imshow("grayFrame", gray)
# cv.imshow("canny Edges", threshold)
# cv.imshow("blur", bluredImage)
cv.imshow("frame", frame)
if cv.waitKey(1) & 0xFF == ord('q'):
break
Спасибо за ответы!
обн .: Использовать преобразование Хафа Преобразование Хафа