当前位置: 代码迷 >> 综合 >> opencv-python 测试对比Sobel、Laplacian、canny三种边缘检测
  详细解决方案

opencv-python 测试对比Sobel、Laplacian、canny三种边缘检测

热度:29   发布时间:2023-12-10 02:16:21.0

作者:RayChiu_Labloy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处


目录

原理和定义: 

常用边缘检测算法相关API:

# 索贝尔边缘识别  

# 拉普拉斯边缘识别  

# Canny边缘识别参数解释

实验:


原理和定义: 

        物体的边缘检测是物体识别常用的手段。边缘检测常用亮度梯度方法。通过识别亮度梯度变化最大的像素点从而检测出物体的边缘。

        详细原理看我另一篇文章:                opencv-python 详解图像梯度、边缘检测_RayChiu757374816的博客-CSDN博客

常用边缘检测算法相关API:

# 索贝尔边缘识别  

# cv.CV_64F:卷积运算使用数据类型为64位浮点型(保证微分的精度) 
# 1:水平方向索贝尔偏微分 
# 0:垂直方向索贝尔偏微分 
# ksize:卷积核为5*5的方阵 
cv.Sobel(original, cv.CV_64F, 1, 0, ksize=5) 

# 拉普拉斯边缘识别  

cv.Laplacian(original, cv.CV_64F) 

# Canny边缘识别参数解释

# 50:水平方向阈值 240:垂直方向阈值 
# original 原始灰度图 
cv.Canny(original, 50, 240)

实验:

图片:

 测试代码:

import cv2 as cvoriginal = cv.imread( './chair.jpg', cv.IMREAD_GRAYSCALE)
original = cv.resize(original, None, fx=0.4, fy=0.4, interpolation=cv.INTER_LINEAR)
_, original = cv.threshold(original, 100, 255, cv.THRESH_BINARY+ cv.THRESH_OTSU)#+ cv2.THRESH_OTSUhsobel = cv.Sobel(original, cv.CV_64F, 1, 0, ksize=5)
cv.imshow('H-Sobel', hsobel)
vsobel = cv.Sobel(original, cv.CV_64F, 0, 1, ksize=5)
cv.imshow('V-Sobel', vsobel)
sobel = cv.Sobel(original, cv.CV_64F, 1, 1, ksize=5)
cv.imshow('Sobel', sobel)
laplacian = cv.Laplacian(original, cv.CV_64F)
cv.imshow('Laplacian', laplacian)
canny = cv.Canny(original, 50, 240)
cv.imshow('Canny', canny)
cv.waitKey(0)

 测试效果:

【如果对您有帮助,交个朋友给个一键三连吧,您的肯定是我博客高质量维护的动力!!!】