openCV阈值负值

时间:2014-05-30 18:58:12

标签: python opencv numpy

我正在尝试计算运动光流,我试图通过设定较小的值来减少噪音。在计算运动流量时,我也会得到负值,我想保留这些值,但是一旦我应用阈值就会被丢弃。

我已经考虑过使用绝对值来实现这个目标,但是,我怎么能收回我的负面信息呢?

此外,我正在使用numpy数组,如果这有帮助:

flow = cv2.calcOpticalFlowFarneback(frameGray, frame1Gray, 0.5,1,3,15,3,5,1)

thresh_flow = cv2.threshold(np.absolute(flow), 5, 255, cv2.THRESH_TOZERO)

1 个答案:

答案 0 :(得分:2)

Numpy提供非常强大的indexing capabilities。其中之一是使用布尔数组进行索引。您可以将符合条件的元素分配给某个值,这似乎是您想要的值。例如,

threshold = 2
flow[np.abs(flow) < threshold] = 0

将分配flow中绝对值太接近零的每个元素。假设flow看起来像这样:

[ 1  2  3]
[-1 -2 -3]

应用此操作的结果将是:

[0  2  3]
[0 -2 -3]

正确地去除了具有小幅度的正面和负面元素,但保留了负面元素的符号。