13-Canny边缘检测

Canny边缘检测主要思路步骤如下:
1,使用高斯滤波器,以平滑图像,滤除噪声
2,计算图像中每个像素点的梯度强度和方向
3,应用非极大值抑制,以消除边缘检测带来的杂散响应
4,应用双阈值检测来确定真实的潜在的边缘
5,通过抑制孤立的弱边缘最终完成边缘检测

1,高斯滤波器:中间点比较大,越边缘越小

在这里插入图片描述

2,梯度和方向:用到Sobel算子,含有x和y两个方向

在这里插入图片描述
在这里插入图片描述

3,非极大值抑制

在这里插入图片描述
在这里插入图片描述

4,双阈值检测

A超过maxVal保留作为边界处理,B和C都在minVal和maxVal之间,但是C连有边界A,所以C保留,而B没有连有边界故舍弃,当然在minVal之下毫无疑问也都舍弃
在这里插入图片描述
cv2.Canny(img,120,250)
第一个参数:图像对象名称
第二个参数:minVal
第三个参数:maxVal
例如:minVal越小表示需要检测出更多的边界,相当于门槛越低,可能检测出来的边界并不那么是一个边界
同样,值越大要求越高,值越小要求越低

import cv2
import numpy as npdef show_photo(name,picture):cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()#设定不同的阈值进行比较    
img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',cv2.IMREAD_GRAYSCALE)
v1 = cv2.Canny(img,80,150)
v2 = cv2.Canny(img,50,100)res = np.hstack((img,v1,v2))#将三个图像横向展示,当然vstack就是列向展示
show_photo('YT,(80,150),(50,100)',res)#设定不同的阈值进行比较  
img = cv2.imread('E:\Jupyter_workspace\study\data/test1.png',cv2.IMREAD_GRAYSCALE)
v1 = cv2.Canny(img,120,250)
v2 = cv2.Canny(img,50,100)res = np.hstack((img,v1,v2))#将三个图像横向展示,当然vstack就是列向展示
show_photo('YT,(120,250),(50,100)',res)

设置不同的阈值,效果如下:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# uri.host_C#| Uri.IsHexEncoding()方法与示例

c# uri.hostUri.IsHexEncoding()方法 (Uri.IsHexEncoding() Method) Uri.IsHexEncoding() method is a static method or Uri class. Which is used to return that given string is hex-encoded or not? If the given string is hex coded then it returns true otherwise it…

一位老鸟对 23 种设计模式的有趣见解(转)

在网络上流畅很广的一篇旧文,暂时没找到原作者,目前所看到的最早转载时间是 2005 年 2 月 28 日。作者用轻松的语言,形象解释了 23 种模式,有很好的启发作用。创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅…

微机原理——移位指令

例题 思路 选择移位语句,右移,将AL移出的送入DX左端,将BL移出的送入DX左端。循环八次 MOV AL,01100101B; MOV BL,11011010B; XOR DX,DX;两个值相同,异或结果为0。等效:MOV DX,0 MOV CX,8;count L1: SHR AL,1;逻辑右…

14-图像金字塔

由第一个图可知,图像金字塔这无非就是对图像进行放大和缩小罢了 1,高斯金字塔 向下采样方法(缩小),越采样越小,即从金字塔底部向上采样 cv2.pyrDown(img) 向上采样方法(放大),越采样越大,即从金字塔顶…

JAVA和javascrito_JAVA 和JavaScript的split方法异同

Split的方法很常用,除了str.split("regex"),其实还可以多传一个参数:str.split("regex", limit)。但是要注意,JavaScript和java的split中limit参数作用是不同的。简单说,JavaScript中,…

如果__name__ =='__main__':在Python中怎么办?

In order to understand the details of __name__ variable and the if condition, let us go through a simple exercise. Run a simple python file with just the following lines and run the file as python3 code, 为了了解__name__变量和if条件的详细信息,让…

Eclipse C/C++开发环境搭建

1 Eclipse的安装 到http://java.sun.com/j2se/1.5.0/download.jsp 下载JRE安装; 到http://eclipse.org下载Eclipse安装。(这儿可以下载Java版本的,也可以下载C/C 版本的) 2 对于下载的Java版本或着只下载Eclipse IDE的&#xff0c…

微机原理——寻址方式总结

一、操作数的寻址方式 立即寻址方式 格式: 操作码 数字表达式(将数据送入寄存器中) 源操作数可以是8位也可以是16位。 MOV AH, F5H (字节操作) F5H称为立即数(8位操作数) MOV AL, 8AH (字节操作) 8AH称为…

15-轮廓检测

边缘是零零散散的,而轮廓是一个整体 cv2.findContours(img,mode,method) img:输入图像对象名称 mode:轮廓检索模式 RETR_EXTERNAL:只检索最外面的轮廓 RETR_LIST:检索所有的轮廓,并将其保存到一条链表当中…

抛硬币仿真实验java_探索HyperLogLog算法(含Java实现)

引言HyperLogLog算法经常在数据库中被用来统计某一字段的Distinct Value(下文简称DV),比如Redis的HyperLogLog结构,出于好奇探索了一下这个算法的原理,无奈中文资料很少,只能直接去阅读论文以及一些英文资料,总结成此文…

kotlin键值对数组_Kotlin程序以升序对数组进行排序

kotlin键值对数组Given an array, we have to sort its elements in ascending order. 给定一个数组,我们必须按升序对其元素进行排序。 Example: 例: Input:arr [10, 20, 5, 2, 30]Output:sorted array (Ascending Order): [2, 5, 10, 20, 30]在Kotl…

微机原理——总线和时序

前提 8088有两个组态: 最大组态和最小组态,通过引脚MN/MX*的电平决定组态。(*表示低电平有效) 两种组态没有本质区别。 8088的引脚: 引脚可分为下面几种类别: 1、数据和地址引脚 2、读写控制引脚 3、中断…

PHP站内搜索:多关键字查找,加亮显示

1、SQL语句中的模糊查找LIKE条件一般用在指定搜索某字段的时候, 通过"% _" 通配符的作用实现模糊查找功能,通配符可以在前面也可以在后面或前后都有。搜索以PHP100开头: SELECT * FROM teble WHERE title LIKE PHP100% 搜索以PHP100结束&…

16-模板匹配

cv2.matchTemplate(img,template,cv2.TM_SQDIFF) 参数一:原图图像对象名称 参数二:模板图像对象名称 参数三:差别程度的计算方法(六选一推荐使用带归一化的) 模板匹配和卷积原理很像,模板从原图像上从原点开始滑动,计…

对MySQL性能影响关系紧密的五大配置参数

以下的文章主要是对MySQL性能影响关系紧密的五大配置参数的介绍,我前几天在相关网站看见对MySQL性能影响关系紧密的五大配置参数的资料,觉得挺好,就拿出来供大家分享,望你能有所收获。(一)连接 连接通常来自Web服务器,…

JAVA安装作用_jdk安装配置及其作用

2.安装好了就是去配置路径了,我的是win7系统,步骤如下:桌面上的计算机右击-》高级系统设置—》环境变量-》系统变量-》新建一共要新建三个变量JAVA_HOME,PATH和CLASSPATH1>JAVA_HOME:(这么写为了方便以后可能改动jdk的安装路径&#xff0c…

用C#开发Windows应用程序

To develop windows application, we need to using studio and follow some steps: 要开发Windows应用程序 ,我们需要使用studio并遵循一些步骤: Step 1) First of all we launch visual studio. 步骤1)首先,我们启动Visual Studio。 Ste…

图像分割——基于二维灰度直方图的阈值处理

前言 像素灰度值仅仅反映了像素灰度级的幅值大小,并没有反映出像素与邻域的空间相关信息。 二维灰度直方图的概念 二维灰度直方图:像素的灰度值分布和邻域的平均灰度值分布构成的二维直方图 二维直方图的值N(i,j) 。其中,if(x,y) 图像(x,y…

多维角度聊聊结对编程

在敏捷软件开发的各种实践中,结对编程(Pair Programming,下文简称Pair)是特别有争议的。Pair有一个特点,那就是还没有进行过任何Pair实践前,你很可能对它已经有了“喜欢” 或者是“讨厌”的印象。如果有人问…

17-直方图

直方图 何为直方图?没那么高大上,其实就是二维统计图。每个照片都是有像素点所组成,当然也是[0,255],直方图就是统计每个值所对应的像素点有几个。 直方图横坐标表示0-255这些像素点值;纵坐标表示对应像素点值的个数有…