遍历二值图获取每一列或者每一行的像素值为255的点的个数,并绘制直方图
时间: 2024-03-13 07:47:03 浏览: 80
可以使用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]`即可。
相关问题
遍历二值图获取每一列或者每一行的第一个像素值为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):
for j in range(height):
if img[j, i] == 255:
histogram[i] = height - j
break
# 绘制直方图
plt.bar(range(width), histogram)
plt.show()
```
同样的,获取每一行第一个像素值为255的点,并绘制直方图也可以使用类似的方法。只需要将上述代码中的`for i in range(width):`改成`for j in range(height):`,`img[j, i]`改成`img[i, j]`,`histogram[i] = height - j`改成`histogram[j] = width - i`即可。
遍历二值图获取每一列或者每一行的白色点的个数,并绘制直方图
好的,这是一个比较简单的问题,下面是一个 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` 函数分别绘制了列直方图和行直方图。
希望这个代码能够帮助到你。
阅读全文