你将如何获取掩码生成的白色像素并将它们放入列表中

时间:2016-12-28 19:27:20

标签: python opencv numpy

我有一张街道的照片,(街道的颜色变化很小),在一些帮助下,我能够裁剪街道的一部分,然后拍摄颜色的样本,然后计算颜色并计算平均值和stdv并为面具创建了下边界和上边界。 我拿了掩码输出并运行了closing = cv2.morphologyEx(output, cv2.MORPH_CLOSE, kernel)

我想拍摄所有正在关闭的白色像素,并创建一个x,y坐标列表。 然后我想取x,y坐标并创建另一个b,g,r值列表。

然后我可以通过

重新运行它
blue=cropimg[:,:,0]; green=cropimg[:,:,1]; red=cropimg[:,:,2];

见图片,显示:原始,面具,关闭,裁剪区域:

original, mask, closing, cropped areas

3 个答案:

答案 0 :(得分:1)

听起来你只是在寻找:

rgb = cropimg[mask,:]  # or mask > 0, if mask is not a boolean array

将返回掩码

下的Nx3像素数组

答案 1 :(得分:1)

为了获得您提出的列表,您可以这样做:

coords, colors = [], []
for y in range(closing.shape[0]):
    for x in range(closing.shape[1]):
        if np.all(closing[y, x] > 0):
            coords.append((y, x))
            colors.append(original[y, x])

因此,您将获得一张列表,其中包含原始图像中这些坐标中的白色坐标和BGR值。

答案 2 :(得分:1)

ebeneditos,我发现这是有效的,但对于大图像,它需要花费太多时间。

 coords, colors = [], []
    for y in range(closing.shape[0]):
        for x in range(closing.shape[1]):
            if np.all(closing[y, x] > 0):
                coords.append((y, x))
                colors.append(img[y, x])