OpenCV直线和圆形检测
直线检测,通过HoughLines和HoughLinesP函数进行计算,区别是:HoughLines使用标准的Hough变换,HoughLinesP使用概率Hough变换。HoughLinesP是标准Hough的优化,通过分析点的子集并估计这些点都属于一条直线的概率,计算量更少,执行更快。
import numpy
from cv2 import cv2img = cv2.imread('C:/Users/admin/Desktop/test/1.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图
edges = cv2.Canny(gray,50,100) #进行canny边缘计算
minLineLength = 20
maxLineGap = 5
lines = cv2.HoughLinesP(edges,1,numpy.pi / 180,100,minLineLength,maxLineGap) #直线检测,保留满足要求的直线
for line in lines:for x1,y1,x2,y2 in line:cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2) #在原图上绘制提取到的直线
cv2.imshow('edges',edges)
cv2.imshow('lines',img)
cv2.waitKey()
cv2.destroyAllWindows()
圆检测,OpenCV的HoughCircles函数可用于检测圆,需要设置圆心间的最小距离和最大最小半径等限制条件。
import numpy
from cv2 import cv2img = cv2.imread('C:/Users/admin/Desktop/test/2.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
blurImg = cv2.medianBlur(gray,5)
cImg = cv2.cvtColor(blurImg,cv2.COLOR_GRAY2BGR)circles = cv2.HoughCircles(blurImg,cv2.HOUGH_GRADIENT,1,120,param1 = 100,param2 = 30,minRadius = 50,maxRadius=200)
circles = numpy.uint16(numpy.around(circles))for i in circles[0,:]:cv2.circle(img,(i[0],i[1]),i[2],(0,255,0),2)cv2.circle(img,(i[0],i[1]),2,(0,0,255),3)cv2.imshow('circle',img)
cv2.waitKey()
cv2.destroyAllWindows()
直线检测,首先是提取canny边缘,再跟据canny边缘图像进一步分析,根据定义的参数提取出直线。
原图:
canny边缘:
直线检测结果(绿色)叠加原图:
圆检测效果
原图:
效果图:
OpenCV直线和圆形检测相关推荐
- 【OpenCV 4开发详解】圆形检测
本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...
- OpenCV直线拟合检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 OpenCV直线拟合检测 霍夫直线检测 ...
- 利用OpenCV的霍夫变换线检测函数HoughLines()得到直线的ρ和θ值后绘制直线的原理详解
为了更好地看懂本文,大家可以先看下我写的另一篇博文,链接如下: https://blog.csdn.net/wenhao_ir/article/details/51774444 OpenCV的霍夫变换 ...
- OpenCV 霍夫圆检测
圆的表示式是: 其中aa和bb表示圆心坐标,rr表示圆半径,因此标准的霍夫圆检测就是在这三个参数组成的三维空间累加器上进行圆形检测,此时效率就会很低,所以OpenCV中使用霍夫梯度法进行圆形的检测. ...
- python获取数组中大于某一阈值的那些索引值_使用Python+OpenCV进行实时车道检测...
大约十年前,当谷歌还在试验一辆原型车的时候,我想到了自己的第一辆自动驾驶汽车,当时我立刻被这个想法迷住了.不可否认的是,我必须等待一段时间,直到这些概念向社区开放,现在看来等待确实是值得的!我最近试验 ...
- OpenCV-Python教程:绘制直线、圆形、方形(line,circle,rectangle)
原文链接:http://www.juzicode.com/archives/5323 返回Opencv-Python教程 因为绘图操作需要用到起点.终点坐标等参数,绘图前需要先了解在OpenCV中图像 ...
- OpenCv相机标定——圆形标定板标定
OpenCv相机标定--圆形标定板标定 0.前言 1.标定图案 2.OpenCv标定 3.标定结果分析 0.前言 OpenCv中,相机标定所使用的标定图案分为棋盘格.对称圆形及非对称圆形特征图.A ...
- 基于Opencv的车距检测系统(源码&教程)
1.研究背景 对本车前方车辆的识别及距离检测是计算机视觉技术在智能网联汽车中的一个重要内容.要想在错综繁杂的交通环境中实现无人驾驶,对行车环境中其他车辆信息的获取是十分重要的.因此,对本车前方车辆的识 ...
- 基于OpenCV的图像形状检测(含源码)
导读 本文给大家分享一个用OpenCV传统方法实现形状检测的小案例. 背景介绍 实例来源:https://github.com/akshaybhatia10/ComputerVision-Projec ...
最新文章
- 全职奶爸的一年深度学习之路:从零基础到成为研究科学家
- SVN工具的使用 和在Eclipse中安装GPD插件:(多步审批流,因此选择使用工作流(JBPM)来实现)...
- ASP.NET应用程序使用NLog记录日志
- 文本分类入门(番外篇)特征选择与特征权重计算的区别
- “adb不是内部或外部命令,也不是可运行的程序或批量文件“
- 在阿里云 ECS 上使用 SAP Spartacus
- Pytorch有关张量的各种操作
- 关于PS插件Nik Collection不兼容cc2021闪退的解决方法
- json与对象的互相转换
- Java 3desede加解密_JAVA加解密11-对称加密算法-DES以及DESede算法
- 计算沙盒下文件夹内容大小 清空沙盒 文件 目录
- 中国双频前端模块市场趋势报告、技术动态创新及市场预测
- MyEclipse移动开发教程:设置所需配置的iOS应用(四)
- mysql常用的语句_MySQL常用语句集锦
- 小程序如何避免多次点击,重复触发事件
- MyBatis 报错The error may exist in…….xml
- No provider available from registry
- 黄金分割法求解局部最小值——python实现
- Word 2019如何从任意页开始设置页码?
- Topic 12 临床预测模型之列线表 (Nomogram)
热门文章
- CSS盒子模型的使用及其注意事项——响应式Web系列学习笔记
- 1041 考试座位号 (15分)——17行代码AC
- 0-1背包问题 题目:国王和金矿问题 描述:有一个国家发现了max_n座金矿,参与挖矿工人的总数是max_people人。每座金矿的黄金储量不同为一维数组gold[],需要参与挖掘的工人数也不同为一维
- python是什么语言汇编_编程语言及python介绍
- php sdk微信,GitHub - swayer/wechat-php-sdk: 微信公众平台 PHP SDK
- 为你讲解ELK的组成与部署
- java list 转 map_Java8 快速实现List转map 、分组、过滤等操作
- 利用JNative实现Java调用动态库
- shell mysql版本_mysql版本5.5.x升级到5.6.x步骤分享
- 基于spring cloud 的灰度发布实践_【收藏】基于spring cloud灰度发版方案