gpt4 book ai didi

map 检测上的Python OpenCV纬度曲线

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:02 25 4
gpt4 key购买 nike

我有一张带有弯曲纬线的 map 。我可以检测到一些经度线。我使用 HoughlineP 来检测线条。我的目标是检测纬度和经度线并找到交点。问题是纬度线遵循更大的圆圈并且在更高的高度(北 40 度)弯曲。地形特征也让 Houghline 很难找到正确的路线。我在任何 Python 包中寻找更好的曲线检测算法。

这是源图像: c_6.jpg

这是我使用的代码:

import cv2
import numpy as np

def draw_lines(hough, image, nlines):
n_x, n_y=image.shape
#convert to color image so that you can see the lines
draw_im = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)

for (rho, theta) in hough[0][:nlines]:
try:
x0 = np.cos(theta)*rho
y0 = np.sin(theta)*rho
pt1 = ( int(x0 + (n_x+n_y)*(-np.sin(theta))),
int(y0 + (n_x+n_y)*np.cos(theta)) )
pt2 = ( int(x0 - (n_x+n_y)*(-np.sin(theta))),
int(y0 - (n_x+n_y)*np.cos(theta)) )
alph = np.arctan( (pt2[1]-pt1[1])/( pt2[0]-pt1[0]) )
alphdeg = alph*180/np.pi
#OpenCv uses weird angle system, see: http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html
if abs( np.cos( alph - 180 )) > 0.8: #0.995:
cv2.line(draw_im, pt1, pt2, (255,0,0), 2)
if rho>0 and abs( np.cos( alphdeg - 90)) > 0.7:
cv2.line(draw_im, pt1, pt2, (0,0,255), 2)
except:
pass
cv2.imwrite("/home/dino/Desktop/3HoughLines.png", draw_im,
[cv2.IMWRITE_PNG_COMPRESSION, 12])

img = cv2.imread('c_6.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

flag,b = cv2.threshold(gray,160,255,cv2.THRESH_BINARY)
cv2.imwrite("1tresh.jpg", b)

element = np.ones((3,3))
b = cv2.erode(b,element)
cv2.imwrite("2erodedtresh.jpg", b)

edges = cv2.Canny(b,10,100,apertureSize = 3)
cv2.imwrite("3Canny.jpg", edges)

hough = cv2.HoughLines(edges, 1, np.pi/180, 200)
draw_lines(hough, b, 100)**

最佳答案

我只有两个想法,没有代码:-)

第一个想法:经度线在我看来是直线,所以 HoughLines 应该足够好。正如您所写,纬度线不是直线,也许您可​​以找到一个解析表达式(使用合适的参数,现在对于直线,您只有 rhotheta,我认为您将需要更多参数),然后尝试应用 Hough 变换,您可能需要自己编写代码。

如果纬度线是圆形,也许您可​​以使用 HoughCircles 来检测它们,或者您也可以使用有关 edges 中边缘垂直位置的信息,以便按顺序在您正在寻找的(圆弧)圆中放置一些约束。

第二个想法:也许您可以尝试在合适的色彩空间中工作,而不是使用灰色图像,以便使用经度和纬度线与背景颜色不同的信息。

关于 map 检测上的Python OpenCV纬度曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com