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爬虫之爬虫框架Scrapy安装配置
Nov 06 Python
Python查找相似单词的方法
Mar 05 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
python 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
一份python入门应该看的学习资料
Apr 11 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
Django vue前后端分离整合过程解析
Nov 20 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与SQL注入攻击[二]
2007/04/17 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[00:20]TI9观赛名额抽取Ⅱ
2019/07/24 DOTA
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
解决python删除文件的权限错误问题
2018/04/24 Python
基于python实现学生管理系统
2018/10/17 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
python调用java的jar包方法
2018/12/15 Python
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
仓库班组长岗位职责
2013/12/12 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
1亿有多大教学反思
2014/05/01 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
2014年团工作总结
2014/11/27 职场文书
民间借贷借条范本
2015/05/25 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
详解Python内置模块Collections
2022/03/22 Python
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js