生成大小512*512的黑底(灰度值为0),中央有200*200 大小白色(灰度值为255)正方形图像,用表格形式列出各灰度统计个数,并绘制该图像的灰度直方图。
时间: 2024-10-20 14:13:27 浏览: 11
用Python去除图像的黑色或白色背景实例
创建这样的图像可以使用Python的PIL库(Pillow),首先生成指定尺寸的黑底图像,然后画上白色的正方形。接下来,我们可以计算每个灰度级别的像素计数并绘制直方图。
这是一个简单的步骤:
1. 导入所需的库:
```python
from PIL import Image, ImageDraw, ImageFont, ImageStat
import numpy as np
```
2. 定义图像尺寸和颜色区域:
```python
img_width, img_height = 512, 512
white_square_size = 200
# 黑色背景,白色正方形中心坐标
black_img = Image.new('L', (img_width, img_height), color=0)
x_center, y_center = img_width // 2 - white_square_size // 2, img_height // 2 - white_square_size // 2
```
3. 使用`ImageDraw`画白色正方形:
```python
draw = ImageDraw.Draw(black_img)
draw.rectangle([(x_center, y_center), (x_center + white_square_size, y_center + white_square_size)], fill=255)
```
4. 计算灰度级别统计和直方图:
```python
pixels = list(black_img.getdata())
gray_counts = {i: pixels.count(i) for i in range(256)}
histogram = [gray_counts[i] for i in sorted(gray_counts.keys())]
```
5. 绘制直方图:
```python
import matplotlib.pyplot as plt
plt.bar(range(256), histogram, tick_label=range(256))
plt.xlabel('Gray Level')
plt.ylabel('Frequency')
plt.title('Histogram of Gray Levels')
plt.show()
```
现在,`gray_counts`字典包含了灰度值从0到255的像素计数,而直方图显示了各个灰度级的分布情况。
阅读全文