直线检测在我们的图像处理算法中是非常重要的。 博文https://blog.csdn.net/WZZ18191171661/article/details/101116949 对常用的直线检测算法进行了汇总性介绍,并给出了性能对比。 无奈,本人和很多小伙伴一样,看到上面这篇博文的时间晚了,有几个代码的下载链接已经失效了。 可是这些直线检测算法又很诱人,所以本人经过一番周折,找齐了文中的所有代码。 同时,为了避免将来更多的下载链接失效,所以索性把所有的代码都保存在这篇博文中,以供自己和大家将来使用的方便。
1 Hough_line代码
import cv2
import numpy as np
img = cv2.imread('test3.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,200,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180, 200)
print(lines)
for i in range(len(lines)):
r,theta = lines[i, 0, 0], lines[i, 0, 1]
a = np.cos(theta)
b = np.sin(theta)
x0 = a*r
y0 = b*r
x1 = int(x0 + 1000*(-b))
y1 = int(y0 + 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
cv2.line(img,(x1,y1), (x2,y2), (0,255,0),2)
cv2.imwrite('test3_r.jpg', img)
cv2.imshow("result", img)
cv2.waitKey(0)
2 HoughP_line代码
import cv2
import numpy as np
img = cv2.imread('test3.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,200,apertureSize = 3)
lines = cv2.HoughLinesP(edges,1,np.pi/180, 80, 30, 10)
for i in range(len(lines)):
cv2.line(img,(lines[i, 0, 0],lines[i, 0, 1]), (lines[i, 0, 2],lines[i, 0, 3]), (0,255,0),2)
cv2.imwrite('test3_r.jpg', img)
cv2.imshow("result", img)
cv2.waitKey(0)
3 LSD代码
import cv2
import numpy as np
img0 = cv2.imread("test3.jpg")
img = cv2.cvtColor(img0,cv2.COLOR_BGR2GRAY)
lsd = cv2.createLineSegmentDetector(0)
dlines = lsd.detect(img)
for dline in dlines[0]:
x0 = int(round(dline[0][0]))
y0 = int(round(dline[0][1]))
x1 = int(round(dline[0][2]))
y1 = int(round(dline[0][3]))
cv2.line(img0, (x0, y0), (x1,y1), (0,255,0), 1, cv2.LINE_AA)
cv2.imwrite('test3_r.jpg', img0)
cv2.imshow("LSD", img0)
cv2.waitKey(0)
cv2.destroyAllWindows()
4 FLD算法代码
import cv2
import numpy as np
img0 = cv2.imread("test3.jpg")
img = cv2.cvtColor(img0,cv2.COLOR_BGR2GRAY)
fld = cv2.ximgproc.createFastLineDetector()
dlines = fld.detect(img)
for dline in dlines:
x0 = int(round(dline[0][0]))
y0 = int(round(dline[0][1]))
x1 = int(round(dline[0][2]))
y1 = int(round(dline[0][3]))
cv2.line(img0, (x0, y0), (x1,y1), (0,255,0), 1, cv2.LINE_AA)
cv2.imwrite('test3_r.jpg', img0)
cv2.imshow("LSD", img0)
cv2.waitKey(0)
cv2.destroyAllWindows()
5 EDlines直线检测算法论文和代码
EDlines直线检测算法论文百度网盘下载链接: https://pan.baidu.com/s/1wIegM9nt97P1sq1HPrjL1g?pwd=b7of
EDlines直线检测算法我提供两个源码给大家。 首先是博文https://blog.csdn.net/WZZ18191171661/article/details/101116949中提供给大家的。 百度网盘下载链接: https://pan.baidu.com/s/1-8zIXli1nV5V-guxYvnF8w?pwd=9u02 注意:这个代码原作者已经进行更新了,所以其主函数所在的代码并不与博文https://blog.csdn.net/WZZ18191171661/article/details/101116949中给大家展示的主函数代码一样了,但是算法是相同的算法。
另一个是某老外使用以上代码后上传分享的,下载链接如下: https://pan.baidu.com/s/1tUQ_6INiDLn59of59IAxww?pwd=n8g7 这个代码还附带了代码运行时的原图片和结果图片,如下图所示: 还需要注意:上面两个代码要想正常编译,都需要你的开发环境配置了ARPACK。
6 LSWMS直线检测算法论文和代码
论文下载链接: https://pan.baidu.com/s/12raOHnfHZvLaPLkvNr1A7Q?pwd=byus 源码百度网盘下载链接: https://pan.baidu.com/s/1roU8z07tzHiPY4Nm2VIFqQ?pwd=fdjm 源码中带了测试图片,如下图所示:
7 CannyLines直线检测算法。
博文https://blog.csdn.net/WZZ18191171661/article/details/101116949提供的这个算法的论文和源码链接均已失效。 我花了些时间和精力,找到了,下面是下载链接。
因为是自己花费时间和精力找寻的,所以我上传到了CSDN的付费下载区(1.9元即可下载),敬请大家见谅,下载链接: https://download.csdn.net/download/wenhao_ir/85336811 由于CSDN的下载区不允许上传论文,所以需要论文的同学可以下载后私信我,我工作时都开启CSDN的,所以回复得很快的。 相关截图如下:
8 MCMLSD直线检测算法
这个算法的论文百度网盘下载链接: https://pan.baidu.com/s/1lWSu5APa55ahXRELUFvpxQ?pwd=pj4h 这个算法的代码百度网盘下载链接: 链接:https://pan.baidu.com/s/1QWP5946yuwdEVG8sRFhZyg?pwd=ow0p
9 LSM直线检测算法
这个算法的论文和代码下载链接也失效了,不过经过一番周折,我也找到了。 因为是自己花时间和精力找到的,所以我也上传到了CSDN的付费下载区,敬请大家谅解。 下载链接: https://download.csdn.net/download/wenhao_ir/85337139 由于CSDN下载区不允许上传论文,所以需要论文的朋友请下载后私信博主,博主工作时都开着CSDN的,所以会很快回复的。
|