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
Python-OpenCV 图像处理(十七):Canny边缘提取(Sobel,Scharr,Laplacian算子)
最新推荐文章于 2025-08-22 22:18:28 发布

最低0.47元/天 解锁文章
369

被折叠的 条评论
为什么被折叠?



