Python-OpenCV 图像处理(十七):Canny边缘提取(Sobel,Scharr,Laplacian算子)

import cv2
import numpy as np
from matplotlib import pyplot as plt

__author__ = "zxsuperstar"
__email__ = "zxsuperstar@163.com"

"""
Canny边缘提取
Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是:
好的检测- 算法能够尽可能多地标识出图像中的实际边缘。
好的定位- 标识出的边缘要尽可能与实际图像中的实际边缘尽可能接近。
最小响应- 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘。
算法步骤:
  ①高斯模糊 - GaussianBlur
 ②灰度转换 - cvtColor
 ③计算梯度 – Sobel/Scharr
 ④非最大信号抑制
 ⑤高低阈值输出二值图像
"""
def edge_demo(image):
    blurred = cv2.GaussianBlur(image,(3,3),0)
    gray = cv2.cvtColor(blurred,cv2.COLOR_BGRA2GRAY)
    xgrad = cv2.Sobel(gray, cv2.CV_16SC1,1,0)
    ygrad = cv2.Sobel(gray, cv2.CV_16SC1,0,1)
    # edge_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)

def sobel(img):
    x = cv2.Sobel(img, cv2.CV_16S, 1, 0)
    y = cv2.Sobel(img, cv2.CV_16S, 0, 1)
    # cv2.convertScaleAbs(src[, dst[, alph
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值