十四、Canny边缘提取

一、算法步骤

1,对图像进行GaussianBlur(高斯模糊)消除一些噪声
2,对图像进行灰度转换cvtColor
3,计算梯度Sobel/Scharr
4,非最大信号抑制
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
5,高低阈值输出二值图像
设定两个阈值T1和T2,凡是高于T2的都保留,凡是低于T1的都舍弃。
从高于T2的像素出发,凡是大于T1并且相互连接的都保留。
最终得到一个输出二值图像。
推荐高低阈值比为T2:T1=3:1或者2:1,其中T2为高阈值,T1为低阈值。

二、Canny边缘检测算法

cv2.Canny(xgrad,ygrad,50,150)x方向梯度、y方向梯度、低阈值、高阈值

import cv2
import numpy as np
from matplotlib import pyplot as pltdef edge(image):blurred = cv2.GaussianBlur(image,(3,3),0)gray = cv2.cvtColor(blurred,cv2.COLOR_BGR2GRAY)#x Gradientxgrad = cv2.Sobel(gray,cv2.CV_16SC1,1,0)#y Gradientygrad = cv2.Sobel(gray,cv2.CV_16SC1,0,1)#Cannyedge_output = cv2.Canny(xgrad,ygrad,50,150)#edge_output = cv2.Canny(gray,50,150)cv2.imshow("Canny Edge",edge_output)dst = cv2.bitwise_and(image,image,mask=edge_output)cv2.imshow("Color Edge",dst)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
edge(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果图如下:
在这里插入图片描述

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

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

相关文章

图解PCB布线数字地、模拟地、电源地,单点接地抗干扰!

我们在进行pcb布线时总会面临一块板上有两种、三种地的情况,傻瓜式的做法当然是不管三七二十一,只要是地 就整块敷铜了。这种对于低速板或者对干扰不敏感的板子来讲还是没问题的,否则可能导致板子就没法正常工作了。当然若碰到一块板子上有多…

十五、霍夫直线检测

一、自定义 import cv2 import numpy as np from matplotlib import pyplot as pltdef line_detection(image):gray cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)edges cv2.Canny(gray,50,150,apertureSize3)lines cv2.HoughLines(edges,1,np.pi/180,200)for line in lines:rho…

【C++ grammar】对象指针、对象数组、函数参数

目录1、Object Pointer & Dynamic Object1. Accessing Object Members via Pointers2. Creating Dynamic Objects on Heap2、Array of Objects声明方式3、Passing Objects to Functions1、Objects as Function Arguments (对象作为函数参数)2. Objects as Function Return …

十六、霍夫圆形检测

一、获取圆形检测原理 原图如下: 选取一个圆的任意点设定为圆形进行绘制圆形,交与一点 再将平面直角坐标系上的各点,通过公式转到极坐标上 很明显的看出较亮的点为圆心,然后通过半径进行绘制出圆。 二、实现步骤 由于霍夫圆检…

商务智能与交易系统的区别

商务智能与交易系统的区别 1、系统设计的区别 商务智能与交易系统之间的差异主要体现在系统设计和数据类型上(见表 1.1 和表1.2)。交易系统把结构强加于商务之上,不管谁来进行一项交易活动, 都会遵循同样的程序和规则,…

LeetCode 572. 另一个树的子树 思考分析

题目 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s: 示例 2: 给定的树 s: 思路 思路:首先层序遍历s树…

十七、轮廓发现

一、轮廓发现原理 轮廓发现是在图像边缘提取的基础上寻找对象轮廓的方法,故边缘提取的阈值的选定会影响到最终轮廓发现的结果。 其本质是基于二值图像的,边缘提取常用Canny进行提取边缘 轮廓发现也是基于拓扑结构,扫描连通图,最后…

关于 WebRequest.RegisterPrefix

RegisterPrefix 方法将 WebRequest 子代注册到服务请求。 WebRequest 后代通常被注册来处理特定的协议(例如 HTTP 或 FTP),但也可能被注册来处理对特定服务器或服务器上的路径的请求。 已注册的预注册保留类型包括下列类型: htt…

LeetCode 404. 左叶子之和思考分析

题目 计算给定二叉树的所有左叶子之和。 如果是下面的树,只有一个左叶子结点4 思考分析 由此我们可以得到左叶子结点的定义: cur->left !NULL && cur->left->leftNULL && cur->left->rightNULL 递归遍历累积操作 …

十八、对已经找到轮廓的图像进行测量

图像轮廓的获取可参考博文十七 一、相关原理 1,弧长和面积 对于弧长和面积,计算出来的轮廓单位都是像素 2,多边形拟合 每一个轮廓都是一系列的点,然后通过多边形进行拟合,无限的接近真实形状 相关API:…

Linux 终端登录SSH:解决SSH的Access Denied 和 make xconfig的使用

对于SSH: 可以不是用putty,尤其是putty出现 Access denied 的时候,请换用konsole 或者其他终端 (如 terminal)在command line中: # ssh 要访问的主机ip eg : ssh 192.168.111 然后确定…

LeetCode 513. 找树左下角的值 思考分析

题目 给定一个二叉树,在树的最后一行找到最左边的值。 递归解 左下角要满足两个条件: 1、深度最大的叶子结点 2、最左结点:使用前序遍历,优先左边搜索。 1、确定递归函数的参数和返回值 参数:树的根结点&#xff…

Linux 平台下 MySQL 5.5 安装 说明 与 示例

一.下载说明前期的一些准备说明,参考:MySQL 发展史http://blog.csdn.net/tianlesoftware/article/details/6999245Mysql 不同版本 说明http://blog.csdn.net/tianlesoftware/article/details/6723117 MySQL 分为Community Server 和 Enterprise Edition。…

LeetCode 112. 路径总和 、113. 路径总和 II 思考分析

目录112. 路径总和题目递归解递归解,其他人的解法迭代解,其他人的解法113. 路径总和 II题目递归解递归解,参考别人的思路112. 路径总和 题目 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,…

【C++ grammar】抽象、封装与this指针

目录1、Abstraction and Encapsulation(抽象与封装)1. Data Field Encapsulation (数据域封装)2. Accessor and Mutator (访问器与更改器)2.1. To read/write private data, we need get/set function (为读写私有数据,需要get/set函数)2.2. …

十九、图像的形态学操作

一、图像形态学 图像形态学是图像处理学科的一个单独分支学科 主要针对的是灰度图和二值图像 是由数学的集合论以及数学中的拓扑几何原理发展而来 二、膨胀操作(dilate) 33的卷积核 以33为卷积核从左往右(从上往下)开始运行,若这卷积核…

X名称空间(WPF)

笔记简述 闲话x名称空间简要x名称空间的Attributex名称空间的标签扩展x名称空间的XAML指令元素闲话 本笔记参考与《深入浅出WPF》、MSDN、Some Blog… MSDN的飞机票点这里。 x名称空间简要 在VS中新建个WpfApplication都会自动生成xmlns:x"http://schemas.microsoft.com/w…

leetcode 106. 从中序与后序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树思考分析

目录1、106题目2、参考思路:递归切割数组3、105题目4、同样思路的代码1、106题目 2、参考思路:递归切割数组 代码参考:公众号:代码随想录 后序数组中序数组 以 后序数组(左右中)的最后一个元素作为切割点,先切中序数组…

二十、分水岭算法

一、基本原理 分水岭算法主要是基于距离变换(distance transform),找到mark一些种子点,从这些种子点出发根据像素梯度变化进行寻找边缘并标记 分水岭:可以简单的理解成一座山,然后来洪水了,水开…

【C++grammar】C++类数据成员的初始化

目录1、类成员的就地初始化example2、构造函数初始化3、默认构造函数:Default Constructor4、举例5、成员的初始化方法的优先级1、类成员的就地初始化example class S { int m 7; // ok, copy-initializes m int n(7); // 错误:不允许用小括号初始化…