使用opencv-python来检测图片中的直线的步骤

 时间:2026-02-15 07:29:15

1、首先,要往python编译器里面加载模块和图片。

# -*- coding: utf-8 -*- 

import cv2

import numpy as np

import matplotlib.pyplot as plt

img = cv2.imread("C:/……/a.jpg") #需要图片的绝对路径

cv2.imshow('0', img)

cv2.waitKey(0)

cv2.destroyAllWindows()

使用opencv-python来检测图片中的直线的步骤

2、运行上图的代码,可以显示原图。

使用opencv-python来检测图片中的直线的步骤

3、把图片变成灰度图:

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

使用opencv-python来检测图片中的直线的步骤

4、用Canny算子检测图像的边界。

这里的原理,就是图像卷积处理,而Canny算子就是卷积内核,又叫卷积模版。

edges = cv2.Canny(gray,50,200)

使用opencv-python来检测图片中的直线的步骤

5、用Hough变换来检测edges里面的直线:

ls = cv2.HoughLines(edges,1,np.pi/180,100)

l1 = ls[:,0,:]

输出直线的端点坐标

print(l1)

一共检测出9条直线。

使用opencv-python来检测图片中的直线的步骤

6、在原图中把所有的直线,凸显出来:

for r,t in l1[:]:

    a = np.cos(t)

    b = np.sin(t)

    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,255),1)

使用opencv-python来检测图片中的直线的步骤

7、运行,出图。

观察发现,有得线段没检测出来,而有的不存在的直线反而画出来了。

使用opencv-python来检测图片中的直线的步骤

  • 怎样使用VS2017新建C++项目
  • VS code如何新建工作区
  • 高频电子线路:[2]无线信道及其传播方式
  • Numbers表格投资回报中如何插入图表
  • Mathematica应用——处理数字的约数问题初步
  • 热门搜索
    流鼻血怎么处理 微粒贷怎么申请 凌度行车记录仪怎么样 蚂蚁花呗怎么关闭 闭经怎么能调有月经 苹果手机怎么群发短信 国际象棋怎么下 经常拉肚子是怎么回事 怎么让嘴唇变薄 腋臭怎么治