Python中cv2.Canny() 函数用法详解
创始人
2024-11-11 01:33:45
0

Python中cv2.Canny() 函数用法详解

一、Canny算子边缘检测原理及步骤
cv2.Canny() 函数是 OpenCV 中的边缘检测函数之一,用于检测图像的边缘。它的基本原理是通过计算图像中每个像素点的梯度值来检测边缘。具体来说,它的实现步骤如下:
1、对输入图像进行高斯滤波,以平滑图像并去除噪声;
2、计算图像的梯度,找到像素点处灰度值变化最大的方向和大小;
3、应用非极大值抑制(Non-maximum Suppression),以消除可能出现的重复边缘;
4、应用双阈值(Double Thresholding)来检测和连接边缘。
二、cv2.Canny() 函数的语法

cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) -> edges 

其中,各参数的含义如下:

  • image:输入图像,必须为单通道灰度图像;
  • threshold1:第一个阈值,用于边缘连接;
  • threshold2:第二个阈值,用于边缘检测;
  • edges:输出的边缘图像;
  • apertureSize:Sobel 算子的大小,可选值为 3、5、7,默认值为 3;
  • L2gradient:是否使用 L 2 L_2 L2​ 范数计算梯度大小,可选值为 True 和 False,默认值为 False。
  • cv2.Canny() 函数的返回值为边缘图像。

注:第一个阈值参数为低阈值,用于确定哪些梯度变化被认为是潜在的边缘。所有梯度值高于低阈值的像素点都被认为是潜在的边缘点。第二个阈值参数为高阈值,用于确定哪些潜在的边缘点是真正的边缘。所有梯度值高于高阈值的像素点都被认为是真正的边缘点。同时,所有梯度值低于低阈值的像素点都被认为不是边缘点。在实际应用中,合适的阈值参数需要根据具体图像和任务进行调整,以获得最佳效果。通常,可以通过试验不同的参数值来确定最佳的阈值参数。
三、应用示例
下面是一个使用 cv2.Canny() 函数进行边缘检测的例子:

import cv2 img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray, 100, 200) cv2.imshow('Original Image', img) cv2.imshow('Edges', edges) cv2.waitKey(0) cv2.destroyAllWindows() 

在上面的例子中,我们将一张彩色图像读入,将其转化为灰度图像后,使用 cv2.Canny() 函数进行边缘检测。其中,第一个阈值为 100,第二个阈值为 200。最后,我们将原始图像和边缘图像一起显示出来。

相关内容

热门资讯

黑科技游戏!wpk微扑克真的有... 黑科技游戏!wpk微扑克真的有辅助吗(透视)详细教程(2022已更新)(哔哩哔哩);1、进入游戏-大...
黑科技黑科技(Wepoke检测... 黑科技黑科技(Wepoke检测)外挂透明挂辅助ai代打(透明挂)一直有挂(有挂教学)-哔哩哔哩1)W...
黑科技中牌率(来玩德州app外... 黑科技中牌率(来玩德州app外挂)外挂透明挂辅助助手(透视)竟然真的有挂(有挂细节)-哔哩哔哩1、完...
一分钟揭秘!!we poke软... 一分钟揭秘!!we poke软件免费版(黑科技)外挂透视辅助工具(有挂方法)-哔哩哔哩是一款可以让一...
黑科技攻略!红龙扑克是真是假(... 黑科技攻略!红龙扑克是真是假(透视)可靠教程(2026已更新)(哔哩哔哩);1、构建自己的红龙扑克是...
黑科技智能ai(wpk苹果版)... 黑科技智能ai(wpk苹果版)外挂透明挂辅助软件(黑科技ai)其实有挂(有挂解惑)-哔哩哔哩;1、上...
黑科技安装(菠萝德州app有挂... 黑科技安装(菠萝德州app有挂吗)外挂透明挂辅助软件(透视)一贯是真的有挂(的确有挂)-哔哩哔哩菠萝...
玩家必看分享!德州之星ai辅助... 玩家必看分享!德州之星ai辅助(黑科技)外挂透明黑科技辅助神器(了解有挂)-哔哩哔哩1、德州之星ai...
黑科技有挂(鱼扑克app)外挂... 黑科技有挂(鱼扑克app)外挂透明挂辅助助手(智能ai)一直是有挂(有挂技巧)-哔哩哔哩1、让任何用...
黑科技美元局!云扑克确实真的有... 黑科技美元局!云扑克确实真的有挂(透视)扑克教程(2023已更新)(哔哩哔哩)1.云扑克确实真的有挂...