图像梯度-Sobel算子
Gx等于左边减去右边 Gy等于下减去上 可以得到像素值
dst = cv2.Sobel(src, ddepth, dx, dy, ksize)
- ddepth:图像的深度
- dx和dy分别表示水平和竖直方向
- ksize是Sobel算子的大小
import cv2
import numpy as np
img=cv2.imread("d:/pie.png")
sobelx=cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)#只测试水平方向地
sobelx1=cv2.convertScaleAbs(sobelx)
res=np.hstack((sobelx,sobelx1))
cv2.imshow('erosion', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
#白到黑是正数,黑到白就是负数,所有得负数会被截断成0,所以要取绝对值
图像xy相加图像梯度
import cv2 import numpy as np img=cv2.imread("d:/pie.png") sobelx=cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)#只测试水平方向地 sobely=cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)#只测试水平方向地 sobely1=cv2.convertScaleAbs(sobely) sobelx1=cv2.convertScaleAbs(sobelx) soblexy=cv2.addWeighted(sobelx1,0.5,sobely1,0.5,0) cv2.imshow('erosion', soblexy) cv2.waitKey(0) cv2.destroyAllWindows()
图像梯度laplacian算法可以直接计算图像
import cv2 import numpy as np img=cv2.imread("d:/pie.png") sobelx=cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)#只测试水平方向地 sobely=cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)#只测试水平方向地 sobely1=cv2.convertScaleAbs(sobely) sobelx1=cv2.convertScaleAbs(sobelx) soblexy=cv2.addWeighted(sobelx1,0.5,sobely1,0.5,0) laplacian=cv2.Laplacian(img,cv2.CV_64F) laplacian=cv2.convertScaleAbs(laplacian) res=np.hstack((soblexy,laplacian)) cv2.imshow('erosion', res) cv2.waitKey(0)