快速像素比较

时间:2017-06-12 13:02:45

标签: python image pixel

我正在寻找Python中的快速图像像素操作。有没有办法更快地与两个rgb值进行比较?

img_new = np.ones(img_org.shape[:2], dtype="uint8") * 0
for i in range(img_org.shape[0]):
    for j in range(img_org.shape[1]):
        if img_org[i, j][0] == 0 and img_org[i, j][2] == 0:
            img_new [i, j] = 255
        else:
            img_new [i, j] = 0

1 个答案:

答案 0 :(得分:1)

你可以使用" vectorised"在Numpy比较:

img_new = np.zeros(img_org.shape[:2], dtype="uint8")
img_new[(img_org[:, :, 0] == 0) & (img_org[:, :, 2] == 0)] = 255

表达式img_org[:, :, 0] == 0采用像素的所有第一个分量(可能是红色通道)的子阵列,并返回与红色通道为0的像素上具有True的图像大小相同的布尔数组否则False。然后对绿色通道进行相同的操作,我们使用&查找红色和绿色通道均为零的所有像素。然后我们使用这个掩码将匹配的像素更新为255。

另请注意,我将np.ones(...) * 0替换为np.zeros(),并且我们在代码中不需要else分支。我们不接触的像素已经为零。