如何基于两个条件过滤numpy数组:一个取决于另一个?

时间:2017-06-07 12:53:21

标签: python-3.x numpy

我正在使用cv2库来检测2个立体图像的关键点,并将生成的dmatches对象转换为numpy数组:

kp_left, des_left = sift.detectAndCompute(im_left, mask_left)
matches = bf.match(des_left, des_right)  # according to assignment pdf
np_matches = dmatch2np(matches)

然后我想过滤关键点,如果关键点在y方向后过滤,不应该大于3像素:

ind = np.where(np.abs(kp_left[np_matches[:, 0], 1] - kp_right[np_matches[:, 1], 1]) < 4)

并且那些关键点也应该没有小于&lt;的差异。 0.然后它意味着关键点在相机后面。

ind = np.where((kp_left[np_matches[ind[0], 0], 0] - kp_right[np_matches[ind[0], 1], 0]) >= 0)

如何结合这两个条件?

1 个答案:

答案 0 :(得分:1)

一般形式如下:

condition1 = x < 4
condition2 = y >= 100
result = np.where(condition1 & condition2)

更一般的形式:

conditions = [...] # list of bool arrays
result = np.where(np.logical_and.reduce(conditions))