python opencv实现直线检测并测出倾斜角度(附源码+注释)


Posted in Python onDecember 31, 2020

由于学习需要,我想要检测出图片中的直线,并且得到这些直线的角度。于是我在网上搜了好多直线检测的代码,但是没有搜到附有计算直线倾斜角度的代码,所以我花了一点时间,自己写了一份直线检测并测出倾斜角度的代码,希望能够帮助到大家!

注:这份代码只能够检测简单结构图片的直线,复杂结构的图片还需要设置合理的参数

下面展示 源码

import cv2
import numpy as np

def line_detect(image):
  # 将图片转换为HSV
  hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
  # 设置阈值
  lowera = np.array([0, 0, 221])
  uppera = np.array([180, 30, 255])
  mask1 = cv2.inRange(hsv, lowera, uppera)
  kernel = np.ones((3, 3), np.uint8)

  # 对得到的图像进行形态学操作(闭运算和开运算)
  mask = cv2.morphologyEx(mask1, cv2.MORPH_CLOSE, kernel) #闭运算:表示先进行膨胀操作,再进行腐蚀操作
  mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)  #开运算:表示的是先进行腐蚀,再进行膨胀操作

  # 绘制轮廓
  edges = cv2.Canny(mask, 50, 150, apertureSize=3)
  # 显示图片
  cv2.imshow("edges", edges)
  # 检测白线  这里是设置检测直线的条件,可以去读一读HoughLinesP()函数,然后根据自己的要求设置检测条件
  lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 40,minLineLength=10,maxLineGap=10)
  print "lines=",lines
  print "========================================================"
  i=1
  # 对通过霍夫变换得到的数据进行遍历
  for line in lines:
    # newlines1 = lines[:, 0, :]
    print "line["+str(i-1)+"]=",line
    x1,y1,x2,y2 = line[0]  #两点确定一条直线,这里就是通过遍历得到的两个点的数据 (x1,y1)(x2,y2)
    cv2.line(image,(x1,y1),(x2,y2),(0,0,255),2)   #在原图上画线
    # 转换为浮点数,计算斜率
    x1 = float(x1)
    x2 = float(x2)
    y1 = float(y1)
    y2 = float(y2)
    print "x1=%s,x2=%s,y1=%s,y2=%s" % (x1, x2, y1, y2)
    if x2 - x1 == 0:
      print "直线是竖直的"
      result=90
    elif y2 - y1 == 0 :
      print "直线是水平的"
      result=0
    else:
      # 计算斜率
      k = -(y2 - y1) / (x2 - x1)
      # 求反正切,再将得到的弧度转换为度
      result = np.arctan(k) * 57.29577
      print "直线倾斜角度为:" + str(result) + "度"
    i = i+1
  #   显示最后的成果图
  cv2.imshow("line_detect",image)
  return result

if __name__ == '__main__':
  # 读入图片
  src = cv2.imread("lines/line6.jpg")
  # 设置窗口大小
  cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
  # 显示原始图片
  cv2.imshow("input image", src)
  # 调用函数
  line_detect(src)
  cv2.waitKey(0)

测试图片:

python opencv实现直线检测并测出倾斜角度(附源码+注释)

效果图:

python opencv实现直线检测并测出倾斜角度(附源码+注释)

图像处理比较粗糙,由于时间问题,也就没有深入研究了。

到此这篇关于python opencv实现直线检测并测出倾斜角度(附源码+注释)的文章就介绍到这了,更多相关opencv 直线检测内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现的监测服务器硬盘使用率脚本分享
Nov 07 Python
Python 的内置字符串方法小结
Mar 15 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 27 Python
Python数据类型之Set集合实例详解
May 07 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
对于Python深浅拷贝的理解
Jul 29 Python
python实现身份证实名认证的方法实例
Nov 08 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 Python
Python实现Appium端口检测与释放的实现
Dec 31 #Python
python 基于selectors库实现文件上传与下载
Dec 31 #Python
python中Mako库实例用法
Dec 31 #Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 #Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 #Python
python 检测nginx服务邮件报警的脚本
Dec 31 #Python
Django 实现图片上传和下载功能
Dec 31 #Python
You might like
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
2019/08/03 PHP
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
AngularJS指令中的绑定策略实例分析
2016/12/14 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
Python解析json文件相关知识学习
2016/03/01 Python
python套接字流重定向实例汇总
2016/03/03 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
大学生个人总结的自我评价
2013/10/05 职场文书
高中军训感言1000字
2014/03/01 职场文书
小学教师评语大全
2014/04/23 职场文书
感恩节活动策划方案
2014/05/16 职场文书
临床专业自荐信
2014/06/22 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
linux目录管理方法介绍
2022/06/01 Servers