OpenCV中如何使用Sobel、Laplacian、Canny进行边缘检测
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,OpenCV中如何使用Sobel、Laplacian、Canny进行边缘检测,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获
千家信息网最后更新 2025年02月12日OpenCV中如何使用Sobel、Laplacian、Canny进行边缘检测
OpenCV中如何使用Sobel、Laplacian、Canny进行边缘检测,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
简述
OpenCV边缘检测的一般步骤为:
滤波
增强
检测
常用的边缘检测的算子和滤波器有:
Sobel算子
Laplacian算子
Canny算子
Scharr滤波器
以下使用Sobel、Laplacian和Canny算子进行边缘检测。图片是从网上随意下载的一张。
代码
import cv2#********************Sobel边缘检测*****************************def edge_sobel( src ): kernelSize = (3, 3) gausBlurImg = cv2.GaussianBlur( src, kernelSize, 0 ) #转换为灰度图 channels = src.shape[2] if channels > 1: src_gray = cv2.cvtColor( gausBlurImg, cv2.COLOR_RGB2GRAY ) else: src_gray = src.clone() scale = 1 delta = 0 depth = cv2.CV_16S #求X方向梯度(创建grad_x, grad_y矩阵) grad_x = cv2.Sobel( src_gray, depth, 1, 0 ) abs_grad_x = cv2.convertScaleAbs( grad_x ) #求Y方向梯度 grad_y = cv2.Sobel( src_gray, depth, 0, 1 ) abs_grad_y = cv2.convertScaleAbs( grad_y ) #合并梯度(近似) edgeImg = cv2.addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0 ) return edgeImg#********************Laplacian边缘检测*****************************def edge_laplacian( src ): scale = 1 delta = 0 depth = cv2.CV_16S if src.shape[2] > 1: src_gray = cv2.cvtColor( src, cv2.COLOR_RGB2GRAY ) else: src_gray = src.clone() kernelSize = (3, 3) gausBlurImg = cv2.GaussianBlur( src_gray, kernelSize, 0 ) laplacianImg = cv2.Laplacian( gausBlurImg, depth, kernelSize ) edgeImg = cv2.convertScaleAbs( laplacianImg ) return edgeImg#********************Canny边缘检测*****************************def edge_canny( src, threshold1, threshold2 ): kernelSize = (3, 3) gausBlurImg = cv2.GaussianBlur( src, kernelSize, 0 ) edgeImg = cv2.Canny( gausBlurImg, threshold1, threshold2 ) return edgeImg#********************主函数*****************************imgSrc = cv2.imread( "1.jpg" )sobelImg = edge_sobel( imgSrc )laplacianImg = edge_laplacian( imgSrc )cannyImg = edge_canny( imgSrc, 20, 60 )cv2.imshow( "Origin", imgSrc )cv2.imshow( "Sobel", sobelImg )cv2.imshow( "Laplacian", laplacianImg )cv2.imshow( "Canny", cannyImg )cv2.waitKey( 0 )cv2.destroyAllWindows()
效果
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
检测
边缘
算子
梯度
方向
滤波器
帮助
清楚
代码
内容
函数
图片
对此
常用
效果
文章
新手
更多
步骤
灰度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
获取数据库事例名可以通过
武警网络安全十个严禁
网易云数据库营销对网易云的影响
写入文件和写入数据库哪个快
存储服务器是不是计算机辅助设备
win8服务器怎么管理进程
服务器系统密码是多少位
绝地服务器区别
数据库什么是完全函数依赖
合肥网络技术服务联系人
网络安全财富金融管理
企业工资管理数据库
计算数据库记录条数
后勤网络安全
图形数据库怎么安装
法规库数据库形式
jsp页面加载数据库连接
学电脑软件开发培训机构
三级网络技术合格要求
数据库时间戳获取
服务器安全策略能防住ddos吗
乡镇网络舆情和网络安全应急预案
即墨区app定制软件开发公司
显示未指定ssm标准服务器
博朗软件开发上海公司
软件开发人员面试评语
中心管理服务器的作用
数据库表达物理数据库的是
软件开发团队名字
抖音和火山是一个服务器吗