图像梯度
梯度简单来说就是求导,openCV提供了三种不同的梯度滤波器;Sobel/Scharr/Laplacian
import cv2.cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('lufei.jpg')
#cv2.CV_64F 输出图像的深度(数据类型)
laplacian = cv2.Laplacian(img, cv2.CV_64F)
#参数1,0为只在x方向求一阶导数,最大可以求2介导数
sobelx = cv2.Sobel(img, cv2.CV_64F,1,0,ksize=5)
# 参数0,1为只在y方向求一阶导数,最大可以求二阶导数
sobely = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=5)
plt.subplot(2,2,1),plt.imshow(img,cmap='gray')
plt.title('Original'), plt.xticks([]),plt.yticks([])
plt.subplot(2,2,2), plt.imshow(laplacian, cmap='gray')
plt.title('Laplacian'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,3), plt.imshow(sobelx, cmap='gray')
plt.title('Sobel X'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,4), plt.imshow(sobely, cmap='gray')
plt.title('Sobel Y'), plt.xticks([]), plt.yticks([])
plt.show()
image.png
网友评论