Opencv学习(4)——图像梯度处理

图像梯度处理

Sobel算子

dst = cv2.Sobel(src,ddepth,dx,dy,ksize)
src :需要处理的图片
ddepth :图像的深度,一般为-1
dx和dy分别表示水平和竖直方向
ksize:Sobel算子的大小
cv2.CV_64F代表每一个像素点元素占64位浮点数,是opencv定义的数据类型。


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

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

不建议直接将dx和dy的参数同时设为1计算,这样会导致图片较为模糊,部分细节缺失
下面是两种情况的图片对比:

Opencv学习(4)——图像梯度处理
这个是分别计算再相加的图片
Opencv学习(4)——图像梯度处理

这个是直接计算的图片
可以看出直接计算的照片明显较为模糊

Scharr算子

Scharr算子(对结果更敏感),将图像结果描绘的比Sobel算子更为细致
dst = cv2.Scharr(src,ddepth,dx,dy,ksize)
src :需要处理的图片
ddepth :图像的深度,一般为-1
dx和dy分别表示水平和竖直方向
ksize:Scharr算子的大小

sobelxy1 = cv2.Sobel(img,cv2.CV_64F,1,1,ksize=3)
sobelxy1 = cv2.convertScaleAbs(sobelxy1)
cv_show('sobelxy1',sobelxy1)
scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)
scharry = cv2.Scharr(img,cv2.CV_64F,0,1)
scharry = cv2.convertScaleAbs(scharry)
scharrx = cv2.convertScaleAbs(scharrx)
scharrxy = cv2.addWeighted(scharry,0.5,scharrx,0.5,0)
cv_show("schar",scharrxy)

Opencv学习(4)——图像梯度处理

laplacian算子

laplacian算子(对变化更敏感,对噪音点更为敏感,一般不单独使用)

lapliacian = cv2.Laplacian(img,cv2.CV_64F,ksize=3)
cv_show("lap",lapliacian)

Original: https://blog.csdn.net/qq_60130426/article/details/125909485
Author: Aurorand
Title: Opencv学习(4)——图像梯度处理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/701538/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球