【OpenCV】canny边缘提取算法

一、canny算法介绍

  canny是边缘检测算法,在1986年提出。是一个很好的边缘检测器,也是常用的图像处理方法。
  canny算法步骤:
  1.高斯模糊:通过高斯模糊去掉噪声,因为canny是最噪声敏感的算法:GaussianBlur
  2.灰度转换:cvtColor
  3.计算梯度:Soble/Scharr
  4.非最大信号压制:梯度——角度——根据角度将值量化
              在这里插入图片描述

  5.双阈值处理(高低阈值连接):输出二值图像
  T1/T2为阈值,凡是高于T2的都保留,凡是小于T1的都抛弃,对于T1-T2之间的像素,如果从高于T2的像素出发大于T1而且相互连接的都保留。最终得到一个输出二值图像。推荐的高低阈值比值为T2:T1=3:1/3:2其中T2为高阈值,T1为低阈值。

二、实战

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
'''canny边缘提取'''

def canny_demo(image):
    # 1.高斯模糊:最后两个参数给定一个就可以自动求取另一个,所以只给其中一个赋值就可以
    blur=cv.GaussianBlur(image,(3,3),0)
    #2.灰度处理
    gray=cv.cvtColor(blur,cv.COLOR_BGR2GRAY)
    #3.求取梯度,也可以不用梯度,直接将灰度图传入cv.canny
    grad_x=cv.Sobel(gray,cv.CV_16SC1,1,0)
    grad_y = cv.Sobel(gray, cv.CV_16SC1, 0, 1)
    #4.求边缘
    edge_output=cv.Canny(grad_x,grad_y,50,150)#参数:x梯度,y梯度 ,低阈值,高阈值

    cv.imshow('canny-demo',edge_output)
    dst=cv.bitwise_and(image,image,mask=edge_output)
    cv.imshow('color edge',dst)


img=cv.imread(r'D:\Project\Opencv\Learning01\fang.png')
cv.imshow('origin',img)
canny_demo(img)
cv.waitKey(0)

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值