如果没有您的进一步描述/澄清,我假设您想要图像亮度的梯度。因此,首先我们需要亮度图像,然后是梯度。请注意,下面的示例代码根本没有经过测试,它只是给出了如何继续的总体思路。
亮度只是灰度图像的同义词,因此根据您选择的库,您可以执行以下操作:
from PIL import Image
lum = Image.open('image.png').convert('L') # PIL method
Or:
import cv2
lum = cv2.imread('image.png',cv2.IMREAD_GRAYSCALE) # OpenCV method
您也可以转换为 HSV 并采用第三个通道:
im = Image.open(f).convert('HSV') # PIL method
H, S, lum = im.split()
Or:
im = cv2.imread('image.png') # OpenCV method
lum = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)[...,2]
现在你想要它的梯度,所以可以是 Sobel 或 Scharr:
# Calculate gradient in x-direction
gradX = cv2.Sobel(... 0,1, ...)
# And y-direction
gradY = cv2.Sobel(... 1,0, ...)
# And get combined gradient
grad = np.sqrt(gradX**2 + gradY**2)
看起来您链接到的网站将其与原始网站混合在一起,我猜可以通过以下方式完成:
fraction = 0.3
mixed = cv2.AddWeighted(im, fraction, grad, 1.0-fraction, ...)