gpt4 book ai didi

image - 给定一个 numpy 数组图像,如何删除被黑色像素 (R,G,B) = (0,0,0) 包围的彩色像素 (R,G,B) != (0,0,0)?

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:24 25 4
gpt4 key购买 nike

我写了一个方法来拍摄一个人的相机图像,确定构成这个人的像素,并将所有其他像素设置为 (0,0,0)。这张新图像显示了被黑色像素包围的人。

这些图像的形状为 (500,500,3),其中前 2 个维度构成图像的宽度和高度,第 3 个维度表示 channel (R,G,B)。

我接下来要做的是消除噪音。有一些像素被错误地归类为属于该人。换句话说,这些是被黑色像素包围的像素。

如何去除这些有颜色但被黑色像素 (0,0,0) 包围的“孤立像素”?

最佳答案

正如 Joe 所建议的那样,我也会使用卷积,但使用不同的内核 np.ones((3,3)):

1 1 1
1 1 1
1 1 1

首先将数组转换为形状为 500X500 的 bool 数组

对于类似的东西:bool_arr = np.sum(arr, axis = -1)!=0,黑色像素将为 False,所有其他将为 正确。 (对于替代的、更快的版本,请参阅评论)

import scipy.signal
conv_arr = scipy.signal.convolve2d(bool_arr, np.ones((3,3)), 'same')
wrong_pixels = conv_arr == 1 # only one of the 9 pixels is colored
pixels[wrong_pixels] = [0,0,0] # color all the wrong ones black

关于image - 给定一个 numpy 数组图像,如何删除被黑色像素 (R,G,B) = (0,0,0) 包围的彩色像素 (R,G,B) != (0,0,0)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45476026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com