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使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
人工神经网络算法知识点总结
Jun 11 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
python add_argument()用法解析
Jan 29 Python
python global和nonlocal用法解析
Feb 03 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 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 IF ELSE简化/三元一次式的使用
2011/08/22 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
jQuery回调方法使用示例
2017/06/26 jQuery
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python argparser的具体使用
2019/11/10 Python
python支持多线程的爬虫实例
2019/12/21 Python
Python求凸包及多边形面积教程
2020/04/12 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
视图的作用
2014/12/19 面试题
师范大学应届生求职信
2013/11/21 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
建材投资建议书
2014/05/16 职场文书
会计系毕业生求职信
2014/05/28 职场文书
活动新闻稿范文
2015/07/17 职场文书
新党员入党决心书
2015/09/22 职场文书
股东协议书范本2016
2016/03/21 职场文书
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL