python中的openCV光流
Posted
技术标签:
【中文标题】python中的openCV光流【英文标题】:openCV optical flow in python 【发布时间】:2012-10-04 07:07:10 【问题描述】:我正在用 python 编写图像分析程序并尝试使用cv.CalcOpticalFlowFarneback
。我弄清楚了大部分事情并且分析工作,但是,我想用flags
参数玩一点。在 cv 文档中,它说 flags 是一个整数,描述如下:
flags –
Operation flags that can be a combination of the following:
OPTFLOW_USE_INITIAL_FLOW Use the input flow as an initial flow approximation.
OPTFLOW_FARNEBACK_GAUSSIAN ...
问题是如何设置标志以使用其中一个选项或两个选项?
【问题讨论】:
【参考方案1】:试试:
flags = OPTFLOW_USE_INITIAL_FLOW | OPTFLOW_FARNEBACK_GAUSSIAN
|
(竖线)字符是按位或。做标志的一种常见方法是对每个标志使用不同的 2 次方。例如,如果OPTFLOW_USE_INITIAL_FLOW
是 2,OPTFLOW_FARNEBACK_GAUSSIAN
是 8,那么它们的组合是二进制的 1010。
他们的实际值可以在documentation看到:
OPTFLOW_USE_INITIAL_FLOW = 4
OPTFLOW_FARNEBACK_GAUSSIAN = 256
【讨论】:
谢谢 Koobz,它看起来确实是对的,除了你为什么认为它是 2 和 8 与 1 和 3(二进制中的 01 和 11)。换句话说,为什么你需要每个标志是 2 位而不是 1 位。 en.wikipedia.org/wiki/Bit_field 可能比我解释得更好。每个位本质上是切换特定标志的专有方式。因此,如果您有 8 位,并且每个位对应于某个标志的开启和关闭,您可以紧凑地传达所有 256 种组合并轻松回答问题,例如是否使用位掩码启用了第 4 位位置的标志。例如。 0111 & 0100 = 0100 其中 != 0 和(因此通常为“真”)。 0111 & 1000 = 0,假。以上是关于python中的openCV光流的主要内容,如果未能解决你的问题,请参考以下文章