04计算机视觉-opencv图像梯度处理
发布日期:2021-06-29 15:45:43 浏览次数:2 分类:技术文章

本文共 1882 字,大约阅读时间需要 6 分钟。

import cv2import matplotlib.pyplot as pltimport numpy as np%matplotlib inlinedef cv_show(name,img):    cv2.imshow(name,img)    cv2.waitKey(0)    cv2.destroyAllWindows()

1 图像梯度-Sobel算子

[外链图片转存失败(img-kxijQeIx-1565701492632)(sobel_1.png)]

img = cv2.imread("pie.png",cv2.IMREAD_GRAYSCALE)cv_show("img",img)plt.imshow(img)

[外链图片转存失败(img-hEQMo4sB-1565701492633)(output_3_1.png)]

dst = cv2.Sobel(src, ddepth, dx, dy, ksize)

  • ddepth:图像的深度

  • dx和dy分别表示水平和竖直方向

  • ksize是Sobel算子的大小

sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)sobelx = cv2.convertScaleAbs(sobelx)cv_show("sobelx",sobelx)plt.imshow(sobelx)

[外链图片转存失败(img-50eXFf9D-1565701492633)(output_5_1.png)]

sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)sobely = cv2.convertScaleAbs(sobely)  cv_show("sobely",sobely)plt.imshow(sobely)

[外链图片转存失败(img-DCpuPjrW-1565701492634)(output_6_1.png)]

分别计算x和y,再求和

sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0)cv_show("sobelxy",sobelxy)plt.imshow(sobelxy)

[外链图片转存失败(img-TrDMMDed-1565701492635)(output_8_1.png)]

直接计算,效果一般般

sobelxy=cv2.Sobel(img,cv2.CV_64F,1,1,ksize=3)cv_show("sobelxy",sobelxy)plt.imshow(sobelxy)

[外链图片转存失败(img-3EnyfMVq-1565701492636)(output_10_1.png)]

# 例子img = cv2.imread("lena.jpg",cv2.IMREAD_GRAYSCALE)cv_show("img",img)plt.imshow(img)

[外链图片转存失败(img-Ht1p96dO-1565701492636)(output_11_1.png)]

sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)sobelx = cv2.convertScaleAbs(sobelx)sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)sobely = cv2.convertScaleAbs(sobely)sobelxy = cv2.addWeighted(sobelx,0.5,sobely,0.5,0)cv_show("sobelxy",sobelxy)plt.imshow(sobelxy)

[外链图片转存失败(img-1lri2PUd-1565701492637)(output_12_1.png)]

2 图像梯度-Scharr算子

[外链图片转存失败(img-hDqDwSGQ-1565701492638)(scharr.png)]

3 图像梯度-laplacian算子

#不同算子的差异img = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)sobelx = cv2.convertScaleAbs(sobelx)   sobely = cv2.convertScaleAbs(sobely)  sobelxy =  cv2.addWeighted(sobelx,0.5,sobely,0.5,0)  scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)scharry = cv2.Scharr(img,cv2.CV_64F,0,1)scharrx = cv2.convertScaleAbs(scharrx)   scharry = cv2.convertScaleAbs(scharry)  scharrxy =  cv2.addWeighted(scharrx,0.5,scharry,0.5,0) laplacian = cv2.Laplacian(img,cv2.CV_64F)laplacian = cv2.convertScaleAbs(laplacian)   res = np.hstack((sobelxy,scharrxy,laplacian))cv_show("res",res)
plt.imshow(res)

[外链图片转存失败(img-KPLXzyD0-1565701492640)(output_18_1.png)]

转载地址:https://codingchaozhang.blog.csdn.net/article/details/99475885 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:05计算机视觉-opencv边缘检测
下一篇:03 计算机视觉-opencv图像形态学处理

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月25日 04时31分15秒