1 原理

2 检测步骤

将参数空间(ρ,θ) 量化成m*n(m为ρ的等份数,n为θ的等份数)个单元,并设置累加器矩阵,初始值为0;

对图像边界上的每一个点(x,y)带入ρ=xcosθ+ysinθ,求得每个θ对应的ρ值,并在ρ和θ所对应的单元,将累加器加1,即:Q(i,j)=Q(i,j)+1;

检验参数空间中每个累加器的值,累加器最大的单元所对应的ρ和θ即为直角坐标系中直线方程的参数。

3 接口

image:二值图像,canny边缘检测输出。这里是result。

rho: 以像素为单位的距离精度,这里为1像素。如果想要检测的线段更多,可以设为0.1。

theta: 以弧度为单位的角度精度,这里为numpy.pi/180。如果想要检测的线段更多,可以设为0.01 * numpy.pi/180。

threshod: 阈值参数,int类型,超过设定阈值才被检测出线段,这里为10。

minLineLength:线段以像素为单位的最小长度。

maxLineGap:同一方向上两条线段判定为一条线段的最大允许间隔。

4 代码及结果

import os

import numpy as np

import cv2

from PIL import Image, ImageEnhance

import math

def img_processing(img):

# 灰度化

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

ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)

# canny边缘检测

edges = cv2.Canny(binary, 50, 150, apertureSize=3)

return edges

def line_detect(img):

img = Image.open(img)

img = ImageEnhance.Contrast(img).enhance(3)

# img.show()

img = np.array(img)

result = img_processing(img)

# 霍夫线检测

lines = cv2.HoughLinesP(result, 1, 1 * np.pi/180, 10, minLineLength=10, maxLineGap=5)

# print(lines)

print("Line Num : ", len(lines))

# 画出检测的线段

for line in lines:

for x1, y1, x2, y2 in line:

cv2.line(img, (x1, y1), (x2, y2), (255, 0, 0), 1)

pass

img = Image.fromarray(img, 'RGB')

img.show()

if __name__ == "__main__":

line_detect("1.jpg")

pass

原图如下:

检测结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python 图像变化检测_python hough变换检测直线的实现方法相关推荐

  1. Hough变换检测直线与圆的原理

    霍夫变换的基本原理 霍夫变换(Hough Transform)可以理解为图像处理中的一种特征提取技术,通过投票算法检测具有特定形状的物体.霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的 ...

  2. hough变换检测直线 matlab,Matlab实现Hough变换检测图像中的直线

    Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各 ...

  3. 小白学习图像处理7——Hough变换检测直线

    文章目录 一.Hough变换的原理 1.过定点的直线方程 2.两点确定一条直线 3.方程的形式 二.实现过程 三.程序代码 1.程序片段 2.总程序 四.matlab 的hough函数 一.Hough ...

  4. python 图像变化检测_Python OpenCV 霍夫(Hough Transform)直线变换检测原理,图像处理第 33 篇博客...

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 33 篇. 基础知识铺垫 霍夫变换(Hough Transform)是图像处理领域中,从图像中识别几 ...

  5. Python-Anaconda练习candy算子用于边缘提取,再用hough变换检测直线边缘

    img: 待检测的图像. threshold: 阈值,可先项,默认为10 line_length: 检测的最短线条长度,默认为50 line_gap: 线条间的最大间隙.增大这个值可以合并破碎的线条. ...

  6. hough变换检测直线 matlab,求能够运行的用matlab进行hough变换直线检测的程序。急!...

    满意答案 love8047g 2013.05.15 采纳率:43%    等级:13 已帮助:12527人 直接运行: RGB = imread('gantrycrane.png'); I = rgb ...

  7. 基于Hough变换的直线和圆的检测与提取

    学数字图像处理有挺长时间了,正好最近这段时间有空,学习了一下Hough变换,作了几个比较简单的东西,分享出来,希望能和大家一起学习,也希望各位能提出宝贵的意见,共同进步,文采不好,欢迎拍砖,下面正式进 ...

  8. java hough_hough变换检测直线Java

    hough变换检测直线原理: 假设在图像中存在一条直线y=k*x+b(此时k,b未知).取直线上的任意两点进行说明,设为(x0,y0),(x1,y1). 所有经过点(x0,y0)的直线满足:-x0*k ...

  9. 使用Python,OpenCV和Hough圆检测图像中的圆

    使用Python,OpenCV和Hough圆检测图像中的圆 1. 效果图 2. cv2.HoughCircles(image, method, dp, minDist) 3. 源码 参考 前几篇博客中 ...

最新文章

  1. 使用Vscode进行远程炼丹
  2. linux 普通用户touch权限不够_一篇文章让你轻松了解 Linux 的权限
  3. 湖北省政府网站刊文:感染新冠肺炎的适龄男性应进行生育力检查
  4. e课表项目第二次冲刺周期第七天
  5. linux登录界面主题,Ubuntu 18.10(Cosmic Cuttlefish) 新登录界面亮相,主题为Yaru
  6. Centos/Red Hat7.9 源码和在线yum 安装 vsftpd
  7. cocos2d c 调用java_cocos2d-x之C++ 调用Java函数并接收返回值
  8. Myeclipse中左边的项目目录没了
  9. 金钱工具类 MoneyUtils.java
  10. linux 下qt 中关于字符集及其转换
  11. 离线数仓03-数仓分层业务逻辑
  12. 为什么PMOS比NMOS的沟道导通电阻大,速度慢,价格高-透彻详解
  13. @huangcheng: Fedora 9 GDM开启XDMCP
  14. 中国电信php,一个基于中国电信开放应用平台的短信发送函数(PHP版)
  15. java五子棋技术路线_五子棋游戏程序设计(VB)
  16. Redis学习笔记(实战篇)(自用)
  17. .xin 域名信用验证问题集锦
  18. Axon框架指南 - Baeldung
  19. [OOD设计] - Black Jack Game (21点)
  20. Python爬取新浪微博热搜榜

热门文章

  1. H2数据库的Spring Boot
  2. JSON和XML:它们如何比较?
  3. 用于混合Spock 1.x和JUnit 5测试的Maven项目设置
  4. spring框架mvc框架_Spring MVC测试框架入门–第2部分
  5. java lambda使用_在Java 8 Lambda上使用Apache Commons Functor功能接口
  6. jboss 不适用内置日志_适用于孩子,父母和祖父母的JBoss HornetQ –第1章
  7. java泛型面试_Java泛型面试问题
  8. CUBA平台正在开源
  9. 使用Java 8进行分组,转换和归约
  10. 阿里媒体转码公共参数_Xuggler教程:转码和媒体修改