霍夫变换之直线检测

作者: 陨星落云 | 来源:发表于2020-03-19 20:29 被阅读0次

霍夫变换

查看图像
import matplotlib.pyplot as plt
import numpy as np
import cv2

# 读取图像
img = cv2.imread('bright-close-up-colorful-2097221.jpg')
# 复制图像
img_copy = np.copy(img)
# 颜色空间转换:BGR——RGB
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 显示图像
plt.imshow(img_rgb)
plt.show()

结果:

01.png

边缘检测

# 灰度图像
gray = cv2.cvtColor(img_copy, cv2.COLOR_BGR2GRAY)
# 高斯滤波
gray_blur = cv2.GaussianBlur(gray, (5,5), 0)
plt.imshow(gray_blur,cmap="gray")
plt.show()
# 设置canny的参数
low_threshold = 120
high_threshold = 200
edges = cv2.Canny(gray_blur,low_threshold,high_threshold)

plt.figure(figsize=(10,8))
plt.imshow(edges,cmap="gray")
plt.show()

结果:

03.png

霍夫变换检测直线

# 使用霍夫变换寻找直线
# 参数设置
rho = 1
theta = np.pi/180
threshold = 65
min_line_length = 250
max_line_gap = 6

# 寻找直线
lines = cv2.HoughLinesP(edges, rho, theta, threshold, np.array([]), min_line_length, max_line_gap)
line_image = np.copy(img_copy)
# 绘制直线
for line in lines:
    for x1,y1,x2,y2 in line:
        cv2.line(line_image,(x1,y1),(x2,y2),(255,0,0),5)

plt.imshow(line_image)
plt.show()

结果:

04.png

相关文章

  • 霍夫变换

    霍夫变换——直线   Hough Line Transform用来做直线检测,前提是已经做了边缘检测。  霍夫变换...

  • 霍夫变换之直线检测

    霍夫变换 查看图像 结果: 边缘检测 结果: 霍夫变换检测直线 结果:

  • 2019-06-03 OpenCV学习

    21直线检测 霍夫直线变换用来做直线检测,前提条件是边缘检测已完成。 22圆检测 霍夫圆变换原理: 从平面坐标到极...

  • 霍夫变换

    一、霍夫直线检测 霍夫变换(Hough Transfrom),是1972年提出的,最开始就是用来在图像中检测直线,...

  • OpenCV+Python直线、圆检测

    霍夫变换 应用范围 只要能用数学方程表示的形状,都能用霍夫变换检测到 直线检测 直线数学方程:或者,其中是原点到直...

  • OpenCV-Python学习(十六):霍夫变换

    目录: 1.什么是霍夫变换? 2.OpenCV中的霍夫线变换-->直线检测 3.OpenCV中的霍夫圆变换-->圆...

  • 霍夫变换直线检测

    y = kx + bb = -kx + y 将 (x, y) 的坐标系转为系数 (k, b) 的坐标系一幅图像上多...

  • 2.霍夫变换

    霍夫变换是检测直线或者圆的一种比较简单的方法。霍夫变换检测直线是比较简单的,做完以后是一个二维平面上的许多曲线,通...

  • GEE霍夫变换(hough transform)

    霍夫变换 主要功能 使用霍夫变换,检测直线特征 代码 步骤分析 创建ee对象,获取LC08数据 计算NDVI ca...

  • 霍夫变换与直线检测

    背景 霍夫变换应该是在边缘检测的基础上的,如果要在如下这张图中做直线的检测,opencv有很多边缘检测的算法得到一...

网友评论

    本文标题:霍夫变换之直线检测

    本文链接:https://www.haomeiwen.com/subject/sskryhtx.html