首页 > 解决方案 > 在网格上获取像素邻域平均值的有效方法

问题描述

我的问题很复杂,但我不确定如何拆分它。

我有图像,我想在其上放置一个网格(网格?),然后获取线交叉及其附近像素的平均颜色。

下图说明了我的任务:

在此处输入图像描述

所以最终我想知道石头是黑色的,白色的,还是位置是空的。

我的问题是如何有效地获取红色区域的像素?

香草溶液是

x = np.linspace(0, image.shape[0], 19)
y = np.linspace(0, image.shape[1], 19)

for i in x:
    for j in y:
        color = image[i, j, :]

但它效率不高,而且在附近也不是平均水平。也会有一些问题

标签: pythonimagenumpyopencvopencv-python

解决方案


该解决方案似乎并不能很好地支持该任务。是的,平均邻域颜色是那里图像的一个指标——但正如你所说,它效率低下。

您不需要邻域:您需要石头分类。您可以在没有被注释信息(例如移动编号)覆盖的区域中使用单个像素或少数几个像素来执行此操作。

从相交点,只需在 1:00 方向、距中心半径 90* 处抓取一个像素。根据需要调整线宽。例如,给定一个位置(row, col)和石头半径r

x = col + 0.85 * r
y = row + 0.10 * r
color = image[x, y, :]
brightness = sum(color)
if brightness < 100:
    stone = "black"
elif brightness > 600:
    stone = "white"
else:
    stone = "vacant"

推荐阅读