grad_x = cv2.Sobel(image.astype(np.uint8), cv2.CV_32F, 1, 0) #对x求一阶导
grad_y = cv2.Sobel(image.astype(np.uint8), cv2.CV_32F, 0, 1) #对y求一阶导
gradx = cv2.convertScaleAbs(grad_x) #用convertScaleAbs()函数将其转回原来的uint8形式
grady = cv2.convertScaleAbs(grad_y)
d = np.arctan2(grad_y, grad_x)/(2*np.pi)+0.5
print(np.max(d),np.min(d))
1.0 0.051208198
plt.figure(figsize=(10,10))
plt.imshow(d)
plt.show()