python - openCV 阈值负值

标签 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)

最佳答案

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

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

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

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

应用此操作的结果将是:

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

它正确地去除了幅度较小的正负元素,但保留了负元素的符号。

关于python - openCV 阈值负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961648/

相关文章:

python - Linux - 使用 Python 访问存储在外部硬盘驱动器上的文件

python - 如何在 TensorFlow 中导入模型

python - 如何展平 dtype 对象的 numpy 数组

python - 如何使用 Numpy 重复这个二维对数组?

python - 为什么 `numpy.einsum` 使用 `float32` 比使用 `float16` 或 `uint16` 工作得更快?

python - 为什么为 if block (在 for 循环内)内的列表元素分配新值不会更改实际列表本身?

python - 列出 1-50 范围内的 50 个随机数,使得相邻数字彼此不在 15 以内

android - 在屏幕截图中模糊矩形

macos - 用cuda为MAC编译opencv

c++ - OpenCV 3 HOG 检测信心?