gpt4 book ai didi

python - Numpy 过滤器像素索引

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

我想提取 RGB 图像中所有像素的 sum 计数,其中 R=0 且 B=0,并且这些像素的 x,y 坐标位于图像的边界上.

首先我得到 R=0 和 B=0 的像素的坐标:

import cv2
import numpy as np
i = cv2.imread("test2.png")
indices = np.where((i[:, :, 0] == 0) & (i[:, :, 2] == 0))

这给了我一个坐标列表。现在我想要获取 x 位置为 0 或图像宽度(在本例中为 21)的所有像素的总和。

我可以对列表进行排序,但如果可能的话,我想坚持使用 numpy 数组。有什么奇特的方法吗?

enter image description here

最佳答案

方法#1

沿着第二个轴使用 X,这是一种奇特方式 -

(i[...,[0,2]]==0).all(-1)[:,[0,-1]].sum()

方法#2

具有多维索引 -

(i[:,[0,-1],[0,2]]==0).sum()

方法#3

为了提高性能,请更多地使用切片 -

mask = (i[...,0]==0) & (i[...,2]==0)
out_x = (mask[:,0] + mask[:,-1]).sum()

在较旧的 NumPy 版本上,np.count_nonzero 可能比 .sum() 更好。

关于python - Numpy 过滤器像素索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46318153/

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