Python,Opencv cv2.Canny()边缘检测
Python,Opencv的Canny边缘检测
- 1. 效果图
- 2. 源码
- 参考
这篇博客将介绍Canny边缘检测的概念,并利用cv2.Canny()实现边缘检测;
- Canny边缘检测是一种流行的边缘检测算法。它是由约翰F开发的,是一个多阶段的算法;
- Canny边缘检测大致包含4个步骤:
- 降噪(使用高斯滤波去除高频噪声);
- 计算边缘梯度和方向(SobelX、SobleY核在水平方向和垂直方向对平滑后的图像进行滤波,找到每个像素的边缘梯度和方向);
- 非最大抑制(在得到梯度大小和方向后,对图像进行全扫描,去除任何不需要的像素,这些像素可能不构成边缘。检查像素是否在其梯度方向的邻域中是局部最大值。否则,将被抑制(归零)。简而言之,得到的结果是一个具有“细边”的二值图像。
- 滞后阈值(决定哪些边是真正的边,哪些不是。为此需要两个阈值minVal和maxVal,任何强度梯度大于maxVal的边都肯定是边,小于minVal的边肯定是非边,因此丢弃。位于这两个阈值之间的边根据其连通性被分类为边或非边。如果它们连接到“确定边缘”像素,则它们被视为边缘的一部分。否则,它们也会被丢弃。)
选择滞后阈值minVal和maxVal是得到正确结果的关键。
1. 效果图
原始图 VS Canny检测效果图如下:
2. 源码
# Canny边缘检测是一种流行的边缘检测算法。它是由约翰F开发的,是一个多阶段的算法;
# Canny边缘检测大致包含4个步骤:
#
# 1.降噪(使用高斯滤波去除高频噪声);
# 2. 计算边缘梯度和方向(SobelX、SobleY核在水平方向和垂直方向对平滑后的图像进行滤波,找到每个像素的边缘梯度和方向);
# 3. 非最大抑制(在得到梯度大小和方向后,对图像进行全扫描,去除任何不需要的像素,这些像素可能不构成边缘。检查像素是否在其梯度方向的邻域中是局部最大值。否则,将被抑制(归零)。简而言之,得到的结果是一个具有“细边”的二值图像。
# 4. 滞后阈值(决定哪些边是真正的边,哪些不是。为此需要两个阈值minVal和maxVal,任何强度梯度大于maxVal的边都肯定是边,小于minVal的边肯定是非边,因此丢弃。位于这两个阈值之间的边根据其连通性被分类为边或非边。如果它们连接到“确定边缘”像素,则它们被视为边缘的一部分。否则,它们也会被丢弃。)
#
# 选择滞后阈值minVal和maxVal是得到正确结果的关键。
import cv2
from matplotlib import pyplot as pltimg = cv2.imread('zly.jpg', 0)
edges = cv2.Canny(img, 80, 200)plt.subplot(121), plt.imshow(img, 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()
参考
- https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_canny/py_canny.html#canny
Python,Opencv cv2.Canny()边缘检测相关推荐
- Python+OpenCV:Canny边缘检测
Python+OpenCV:Canny边缘检测 理论 Canny边缘检测是目前比较流行的边缘检测算法,它由John F. Canny发明. 1. 这是一个多阶段的算法. 2. 降噪:由于边缘检测容易受 ...
- python+opencv图像处理之边缘检测车道线识别
python+opencv图像处理之边缘检测车道线识别 1.自行安装python和opencv 2.导入我们要使用的相关库 import cv2 from matplotlib import pypl ...
- OpenCV中Canny边缘检测
OpenCV中Canny边缘检测 具体的Canny边缘检测原理: 1.消除噪声,使用高斯平滑滤波器卷积降噪 2.计算梯度幅值和方向.利用Sobel滤波器. 得到x和y方向的导数Gx和Gy 计算梯度的幅 ...
- python opencv cv2在图片中画mask掩码/掩膜
python opencv cv2在图片中画mask掩膜 import cv2 import numpy as np from PIL import Image import matplotlib.p ...
- python opencv cv2.imread
python opencv cv2.imread 环境说明 opencv 安装 pip install opencv-python opencv:opencv_python 4.5.5.64 介绍 方 ...
- 图像处理——基于OpenCV的canny边缘检测
前言 边缘检测是处理图像里面的比较重要的一个概念,现在的边缘有传统的处理算法,也有加入深度学习的边缘检测算法,这里把我用过的几种边缘检测做个对比. canny算子 1.OpenCV canny() C ...
- python opencv cv2.resize()函数
**def resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None): # real signature unknown; ...
- python opencv cv2.cvtColor()方法(将图像从一种颜色空间转换为另一种颜色空间)(转换成灰度图)
def cvtColor(src, code, dst=None, dstCn=None): # real signature unknown; restored from __doc__" ...
- python opencv cv2.VideoCapture(),read(),waitKey()的使用 ret,frame参数
参考文章:python-OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用 VideoCapture.py # encoding: utf-8 # modu ...
最新文章
- 安装ubuntu后要做的几件事
- maven 整合支付宝,导入alipay-sdk-java包到本地仓库,远程仓库
- 万里挑一!北大AI女神每天必看的几个优质公众号
- 如果访问云服务器上的文件,如果访问云服务器上的文件
- Leetcode--17.电话号码的字母组合
- Python通过Zabbix API获得数据
- bitnami下mysql配置-包含phpMyAdmin配置
- 人脸表情识别从0到部署,猜猜『轮到你了』的微笑狼人到底是谁!
- 10分钟带你读完人工智能的三生三世
- OpenHarmony 3.2 Release HDF的IDL文件初探(上)
- 创建存储过程create procedure
- 系统集成项目管理工程师(中级)
- 如何修改品牌电脑logo,让你电脑开机更个性
- 如何查询我的连连跨境支付提现手续费费率?
- 三菱FX系列DPLSY指令使用
- 哪些行业适合开发小程序商城
- 一文讲解,Linux内核——Memory Barrier(内存屏障)
- 计算机单片机实训报告,单片机实训总结
- 《隐秘的角落》里笛卡尔的爱情故事,是真的吗?
- 社区宽带繁忙是什么意思_嗖!开发区宽带网速已提升至千兆