我已经使用枕头将图像加载为numpy数组,并且所得到的numpy数组的尺寸为(184,184,4),即它是184x184像素图像,每个像素具有RGBA尺寸。
出于所有实际目的,我的应用程序只需知道像素是否为黑色,因此我只需要一个184x184 np数组,其中包含0,1。
我是numpy的新手,特别是图像操作,想知道是否有更快的方法来做到这一点。
我尝试了在循环中检查每个像素的天真实现,这看起来太昂贵了。
答案 0 :(得分:4)
如果我理解正确,你有一个形状(184,184,4)的数组,你想得到一个形状为(184,184)的布尔数组,具体取决于最终尺寸是否等于[0,0,0,0]
image = np.random.randint(0, 255, size=(184, 184, 4)) #Generate random image
isBlack = np.int64(np.all(image[:, :, :3] == 0, axis=2))
完成!
但它是如何运作的?好像很神奇! Numpy有点神奇。这就是我们喜欢它的原因。在这种情况下: