遍历二值图获取每一列或者每一行的白色点的个数,并绘制直方图
时间: 2024-03-13 09:47:15 浏览: 68
好的,这是一个比较简单的问题,下面是一个 Python 的示例代码,可以实现你的要求:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取二值图像
img = cv2.imread('binary_image.png', cv2.IMREAD_GRAYSCALE)
# 获取每一列的白色点个数
col_sum = np.sum(img, axis=0)
# 获取每一行的白色点个数
row_sum = np.sum(img, axis=1)
# 绘制列直方图
plt.bar(range(img.shape[1]), col_sum)
plt.show()
# 绘制行直方图
plt.bar(range(img.shape[0]), row_sum)
plt.show()
```
这段代码首先读取了一个名为 `binary_image.png` 的二值图像,然后使用 `np.sum` 函数对其进行列求和和行求和,得到每一列和每一行的白色点个数。最后使用 `matplotlib` 库中的 `bar` 函数分别绘制了列直方图和行直方图。
希望这个代码能够帮助到你。
相关问题
遍历二值图获取每一列或者每一行的像素值为255的点的个数,并绘制直方图
可以使用NumPy和Matplotlib库来实现。以下是获取每一列像素值为255的点的个数,并绘制直方图的代码示例:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取二值图像
img = cv2.imread('binary_image.png', 0)
# 获取图像大小
height, width = img.shape[:2]
# 遍历每一列,统计像素值为255的点的个数
histogram = np.zeros(width)
for i in range(width):
count = 0
for j in range(height):
if img[j, i] == 255:
count += 1
histogram[i] = count
# 绘制直方图
plt.bar(range(width), histogram)
plt.show()
```
同样的,获取每一行像素值为255的点的个数,并绘制直方图也可以使用类似的方法。只需要将上述代码中的`for i in range(width):`改成`for j in range(height):`,`img[j, i]`改成`img[i, j]`即可。
读取黑白图像,遍历每行每列,将白色点的个数绘制成直方图
好的,我来解答你的问题。
首先,你可以使用Python的Pillow库来读取黑白图像。然后,你需要遍历每行每列,并计算每行每列中白色点的个数。最后,将这些白色点的个数绘制成直方图。
下面是一个代码示例:
```python
from PIL import Image
import matplotlib.pyplot as plt
# 读取黑白图像
im = Image.open("image.png").convert("L")
# 获取图像宽度和高度
width, height = im.size
# 初始化直方图数据
hist = [0] * width
# 遍历每列,计算白色点的个数
for x in range(width):
count = 0
for y in range(height):
if im.getpixel((x, y)) == 255:
count += 1
hist[x] = count
# 绘制直方图
plt.bar(range(width), hist)
plt.show()
```
在这个示例中,我们首先使用Pillow库读取了一张黑白图像,并将其转换为灰度图像。然后,我们遍历了每列,并计算了每列中白色点的个数。最后,我们使用Matplotlib库绘制了直方图。
希望这个示例能够帮助到你!如果你还有其他问题,可以继续问我。
阅读全文