python实现直方图规定化;并通过该方法把一张风景画转换为水墨画风格的灰度分布。给出代码
时间: 2024-10-15 20:10:52 浏览: 28
在Python中,我们可以使用matplotlib库来绘制直方图,并结合PIL库对图像进行预处理,将一幅彩色风景画转换成水墨画风格的灰度分布。这里我们先展示如何进行直方图规定化,然后应用到图像处理上。首先,你需要安装这两个库,如果尚未安装,可以使用pip安装:
```bash
pip install matplotlib pillow
```
下面是一个简单的例子,展示了如何实现直方图规定化以及将图片转为黑白风格:
```python
import matplotlib.pyplot as plt
from PIL import Image
# 加载图片
img = Image.open('your_image.jpg')
# 将图片转化为灰度
gray_img = img.convert('L')
# 获取灰度图像的像素值
pixels = list(gray_img.getdata())
# 绘制原始灰度直方图
hist, bins = plt.hist(pixels, bins=256, range=(0, 256), density=True)
plt.xlabel('灰度值')
plt.ylabel('频率')
plt.title('原始灰度直方图')
# 直方图规定化
# 这里假设你想要将直方图压缩到0-1范围
normalized_hist = hist / hist.max()
# 根据新的概率密度分配灰度值
new_pixels = [int(normalized_hist[i] * (255 if i < len(normalized_hist) else 0)) for i in range(256)]
# 更新灰度图像的像素值
for i, pixel in enumerate(new_pixels):
gray_img.putpixel((i // gray_img.width, i % gray_img.height), pixel)
# 保存结果
gray_img.save('converted_moodle_style.jpg')
阅读全文