您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
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()
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。