import cv2 
import numpy as np
import matplotlib.pyplot as plt

#图像梯度
img=cv2.imread('E:/python/jianbian.jpg',0)

laplacian=cv2.Laplacian(img,cv2.CV_64F)
sobelx=cv2.Sobel(img,cv2.CV_64F,1,0,ksize=5)
sobely=cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)
plt.subplot(221),plt.imshow(img,'gray'),plt.title('input')
plt.subplot(222),plt.imshow(laplacian,'gray'),plt.title('laplacian')
plt.subplot(223),plt.imshow(sobelx,'gray'),plt.title('sobelx')
plt.subplot(224),plt.imshow(sobely,'gray'),plt.title('sobely')
plt.show
import cv2 
import numpy as np
import matplotlib.pyplot as plt

#图像梯度
img=cv2.imread('E:/python/box.png',0)

sobel8u=cv2.Sobel(img,cv2.CV_8U,0,1,ksize=5)
sobel=cv2.Sobel(img,-1,0,1,ksize=5)
sobel64f=cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)
abs_sobel64f=np.absolute(sobel64f)
sobel_8u=np.uint8(abs_sobel64f)
plt.subplot(221),plt.imshow(img,'gray'),plt.title('input')
plt.subplot(222),plt.imshow(sobel8u,'gray'),plt.title('sobel8u')
plt.subplot(223),plt.imshow(sobel64f,'gray'),plt.title('sobel64f')
plt.subplot(224),plt.imshow(sobel_8u,'gray'),plt.title('sobel_8u')
plt.show

opencv图像梯度图像梯度注意:当sobel=cv2.Sobel(img,-1,0,1,ksize=5),-1表示与原图像深度一致,但是当从黑到白的边界导数是正,从白到黑导数为负数,不能用uint8,应该变为cv2.CV_64F,,取绝对值后再转回

相关文章: