我们说我有一个numpy数组形式的OpenCV图像。我想收集大于零蓝色分量的点的所有(x,y)点坐标。天真的方式是这样的:
n_rows, n_cols, _ = image.shape
points = []
for row in range(n_rows):
for col in range(n_cols):
if image[row, col, 0] > 0:
points.append((row, col))
使用numpy或OpenCV功能是否有更智能,更有效的方法来做同样的事情?
答案 0 :(得分:3)
这会有所帮助:
np.argwhere(image[:,:,0] > 0)
对于具有三个颜色通道的给定image
(在此BGR中),0
中的image[:,:,0]
表示第一个通道(蓝色)
语句本身返回一个坐标数组,其中蓝色通道的像素值大于0