Python cv.Canny()方法参数与使用方法
目录
- 函数原型与参数详解
- 效果
函数原型与参数详解
OpenCV提供了cv.Canny()方法,该方法将输入的原始图像转换为边缘图像。
该方法的原型为:
cv.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) -> edges cv.Canny(dx, dy, threshold1, threshold2[, edges[, L2gradient]]) -> edges
- image参数是array格式的输入图像。
- threshold1与threshold2分别是我们的下界阈值与上界阈值。
- apertureSize是用于查找图像梯度的Sobel核的大小,默认为3。
- L2gradient指定了求梯度幅值的公式,是一个布尔型变量,默认为False。当它为True时,使用L2,否则使用L1。
下面是具体代码:
def canny_detect(image_path, show=True): # 读取图像 image = cv2.imread(image_path, 0) # 获取结果 edges = cv2.Canny(image, 100, 200) if show: # 绘制原图 plt.subplot(121) plt.imshow(image, cmap='gray') plt.title('Original Image') plt.xticks([]) plt.yticks([]) # 绘制边缘图 plt.subplot(122) plt.imshow(edges, cmap='gray') plt.title('Edge Image') plt.xticks([]) plt.yticks([]) plt.show() return edges canny_detect('images/2.jpeg')
效果
到此这篇关于Python cv.Canny()方法参数与使用方法的文章就介绍到这了,更多相关Python cv.Canny()方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python实现Opencv cv2.Canny()边缘检测
目录 1. 效果图 2. 源码 补充:OpenCV-Python 中 Canny() 参数 这篇博客将介绍Canny边缘检测的概念,并利用cv2.Canny()实现边缘检测: Canny边缘检测是一种流行的边缘检测算法.它是由约翰F开发的,是一个多阶段的算法: Canny边缘检测大致包含4个步骤: 降噪(使用高斯滤波去除高频噪声): 计算边缘梯度和方向(SobelX.SobleY核在水平方向和垂直方向对平滑后的图像进行滤波,找到每个像素的边缘梯度和方向): 非最大抑制(在得到梯度大小和方向后,对
-
Python OpenCV Canny边缘检测算法的原理实现详解
目录 Gaussian smoothing Computing the gradient magnitude and orientation Non-maxima suppression Hysteresis thresholding OpenCV实现 Gaussian smoothing 总的来说,Canny边缘检测可以分为四个步骤: 由于边缘检测对噪声敏感,因此对图像应用高斯平滑以帮助减少噪声.具体做法是,采用一个5*5的高斯平滑滤波器对图像进行滤波处理. Computing the gra
-
Python利用Canny算法检测硬币边缘
目录 一.问题背景 二.Canny 算法 (一).高斯平滑 (二)Sobel算子计算梯度 (三)非极大化抑制 (四)滞后边缘跟踪 一.问题背景 纸面上有一枚一元钱的银币,你能在 Canny 和 Hough 的帮助下找到它的坐标方程吗? 确定一个圆的坐标方程,首先我们要检测到其边缘,然后求出其在纸面上的相对位置以及半径大小. 在这篇文章中我们使用 Canny 算法来检测出纸面上银币的边缘. 二.Canny 算法 Canny 可以用于拿到图像中物体的边缘,其步骤如下 进行高斯平滑 计算图像梯度(记录
-
Python实现Canny及Hough算法代码实例解析
任务说明:编写一个钱币定位系统,其不仅能够检测出输入图像中各个钱币的边缘,同时,还能给出各个钱币的圆心坐标与半径. 效果 代码实现 Canny边缘检测: # Author: Ji Qiu (BUPT) # filename: my_canny.py import cv2 import numpy as np class Canny: def __init__(self, Guassian_kernal_size, img, HT_high_threshold, HT_low_threshold)
-
opencv python Canny边缘提取实现过程解析
这篇文章主要介绍了opencv python Canny边缘提取实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Canny是边缘提取算法,在1986年提出的是一个很好的边缘检测器Canny算法介绍 非最大信号抑制: 高低阈值连接: example import cv2 as cv import numpy as np # canny运算步骤:5步 # 1. 高斯模糊 - GaussianBlur # 2. 灰度转换 - cvtCol
-
python实现canny边缘检测
canny边缘检测原理 canny边缘检测共有5部分组成,下边我会分别来介绍. 1 高斯模糊(略) 2 计算梯度幅值和方向. 可选用的模板:soble算子.Prewitt算子.Roberts模板等等; 一般采用soble算子,OpenCV也是如此,利用soble水平和垂直算子与输入图像卷积计算dx.dy: 进一步可以得到图像梯度的幅值: 为了简化计算,幅值也可以作如下近似: 角度为: 如下图表示了中心点的梯度向量.方位角以及边缘方向(任一点的边缘与梯度向量正交) : θ = θm = arcta
-
python中opencv Canny边缘检测
目录 Canny边缘检测 Canny边缘检测基础 高斯滤波去除图像噪声 计算梯度 非极大值抑制 应用双阈值确定边缘 Canny函数及使用 Canny边缘检测 Canny边缘检测是一种使用多级边缘检测算法检测边缘的方法. OpenCV提供了函数cv2.Canny()实现Canny边缘检测. Canny边缘检测基础 Canny边缘检测分为如下几个步骤: 去噪.噪声会影响边缘检测的准确性,因此首先要将噪声过滤掉. 计算梯度的幅度与方向 非极大值抑制,即适当地让边缘“变瘦” 确定边缘.使用双阈值算法确定
-
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
import cv2 from matplotlib import pyplot as plt import numpy as np img= cv2.imread('39.jpg')#加载图片 cv2.namedWindow('Canny edge detect')#设置窗口,cv2.WINDOW_NORMAL表示窗口大小可自动调节 cv2.namedWindow('Original Image',cv2.WINDOW_NORMAL) cv2.namedWindow('Canny edgeIm
-
python Canny边缘检测算法的实现
图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用.在空域运算中来说,对图像的锐化就是计算微分.对于数字图像的离散信号,微分运算就变成计算差分或梯度.图像处理中有多种边缘检测(梯度)算子,常用的包括普通一阶差分,Robert算子(交叉差分),Sobel算子等等,是基于寻找梯度强度.拉普拉斯算子(二阶差分)是基于过零点检测.通过计算梯度,设置阀值,得到边缘图像. Canny边缘检测算子是一种多级检测算法.1986年由J
-
Python cv.Canny()方法参数与使用方法
目录 函数原型与参数详解 效果 函数原型与参数详解 OpenCV提供了cv.Canny()方法,该方法将输入的原始图像转换为边缘图像. 该方法的原型为: cv.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) -> edges cv.Canny(dx, dy, threshold1, threshold2[, edges[, L2gradient]]) -> edges image参数是arr
-
python解析命令行参数的三种方法详解
这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法:sys.argv.argparse解析.getopt解析 方法一:sys.argv -- 命令行执行:python test_命令行传参.py 1,2,3 1000 # test_命令行传参.py import sys def para_input(): print(len(sys.argv)) #
-
基于@Bean修饰的方法参数的注入方式
目录 @Bean修饰的方法参数的注入 Bean的四种注入方式 1.set注入 2.构造器注入 3.静态工厂注入 4.实例工厂注入 @Bean修饰的方法参数的注入 方法参数默认注入方式为Autowired,即先根据类型匹配,若有多个在根据名称进行匹配. 1:复杂类型可以通过@Qualifier(value="XXX")限定 2:对于普通类型使用@Value(XXX)指定 @PropertySource("classpath:db.properties") public
-
方法参数属性params,@PathVariable和@RequestParam用法及区别
目录 [1]params [2]@PathVariable绑定URL中变量 ① 前台实例 ② 后台代码 ③ 注解源码 [3]@RequestParam ① 注解源码 ② 前台请求实例 ③ 后台代码 [1]params 您可以根据请求参数条件缩小请求映射范围. 您可以测试是否存在请求参数(myParam),是否缺少一个(!myParam),或针对特定值(myParam=myValue). 以下示例显示了如何测试特定值: @GetMapping(path = "/pets/{petId}"
-
python通过装饰器检查函数参数数据类型的方法
本文实例讲述了python通过装饰器检查函数参数数据类型的方法.分享给大家供大家参考.具体分析如下: 这段代码定义了一个python装饰器,通过此装饰器可以用来检查指定函数的参数是否是指定的类型,在定义函数时加入此装饰器可以非常清晰的检测函数参数的类型,非常方便 复制代码 代码如下: def accepts(exception,**types): def check_accepts(f): assert len(types) == f.func_code.co_argco
-
Python 获得命令行参数的方法(推荐)
本篇将介绍python中sys, getopt模块处理命令行参数 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2] test.py import sys print "脚本名:", sys.argv[0] for i in range(1, len(sy
-
浅谈python脚本设置运行参数的方法
正在学习Django框架,在运行manage.py的时候需要给它设置要监听的端口,就是给这个脚本一个运行参数.教学视频中,是在Eclipse中设置的运行参数,网上Django大部分都是在命令行中运行manage.py时添加参数,没有涉及到如何在pycharm中设置运行参数.以下是两种设置运行参数的方法(以manage.py为例),不设置运行参数时,运行结果为 D:\Python2.7\python.exe "D:/Django project/DjangoProject1/manage.py&q
-
Python实现接受任意个数参数的函数方法
这个功能倒也不是我多么急需的功能,只是恰好看到了,觉得或许以后会用的到.功能就是实现函数能够接受不同数目的参数. 其实,在C语言中这个功能是熟悉的,虽说实现的形式不太一样.C语言中的main函数是可以实现类似的功能的,可以通过这种方式实现一个支持命令行参数的程序. 先写一段python实现相应功能的示范代码: defFuncDemo(*par): print("number of pars: %d" %len(par)) print("type of par: %s"
-
python函数不定长参数使用方法解析
这篇文章主要介绍了python函数不定长参数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 pathon中的函数可以使用不定长参数,可以用参数*args接收单个出现的参数,接收后存成一个元组:用**kwargs接收以键值对形式出现的参数,接收后存丰一个字典.下面的小程序能说明这个问题 代码如下: def print_info(*args,**kwargs): for i in args: print(i) for i in kwar
-
Python脚本文件外部传递参数的处理方法
前言 我们写的 Python 脚本需要修改参数,当我们将脚步上传到服务器或者给不会编程的人用时,会比较不方便,如果直接可以在外部指定参数,会非常方便,今天介绍的就是 Python 外部指定参数的几种方法. 一.流文本处理 这种方法适用于修改一下文件中的内容,配合 Linux 命令非常方便,举一个例子,我们需要从一个 binlog 文件中找到该里面最大的事物,我们要配合 mysqldump 来做: mysqlbinlog -v --base64-output=decode-row ./mysql-
随机推荐
- DNS服务器中创建正向查找区域并在该区域下创建主机记录
- js实现四舍五入完全保留两位小数的方法
- PHPstorm快捷键(分享)
- EasyUI 中 MenuButton 的使用方法
- Windows Vista免激活补丁
- 10分钟带你理解Java中的反射
- 用js实现小球的自由移动代码
- PHP数据库处理封装类实例
- Android中使用开源框架eventbus3.0实现fragment之间的通信交互
- AJAX初体验之实战篇——打造博客无刷新搜索
- centos系统搭建本地yum服务器的方法
- jQuery实现定时读取分析xml文件的方法
- JavaScript进阶教程(第三课)第1/2页
- WinForm使用正则表达式提取内容的方法示例
- C#编程和Visual Studio使用技巧(上)
- WordPress中卸载插件以及移除文章类型组件的代码示例
- java中final与finally的使用介绍
- Android Studio导入so文件到项目中的实例详解
- 技术入股创业一年,家庭收入变成负5万
- vue中element组件样式修改无效的解决方法