Python 如何仅使用NumPy和PIL对.jpg图像应用过滤器

Python 如何仅使用NumPy和PIL对.jpg图像应用过滤器,python,numpy,python-imaging-library,convolution,Python,Numpy,Python Imaging Library,Convolution,我正在尝试将以下模糊过滤器np.array([[1,1,1],[1,1,1],[1,1,1])/9应用于.jpg图像,但是,该图像显示为全黑色或具有奇怪的颜色 我不明白我做错了什么,因为我应用了灰度过滤器,它工作了。过程如下: from PIL import Image from numpy import asarray image = Image.open('sample.jpg') data = asarray(image) gray = np.dot(data, [0.3,0.59,

我正在尝试将以下模糊过滤器
np.array([[1,1,1],[1,1,1],[1,1,1])/9
应用于.jpg图像,但是,该图像显示为全黑色或具有奇怪的颜色

我不明白我做错了什么,因为我应用了灰度过滤器,它工作了。过程如下:

from PIL import Image
from numpy import asarray

image = Image.open('sample.jpg')

data = asarray(image)

gray = np.dot(data, [0.3,0.59,0.11]) 
gray = gray.astype(np.uint8) 
img = Image.fromarray(gray) 
img.save('sample.png')

为什么它不能与其他过滤器一起工作?提前感谢

应用过滤器会使图像值浮动(小数),但随后会将图像强制转换为无符号8位整数(
gray.astype(np.uint8)
)。这将把所有小数截断为整数