目前我正在尝试将使用 Open CV 的 Python 程序移植到 Java。
这是我试图翻译的原始 Python 代码:
flow = cv2.calcOpticalFlowFarneback(prev, next, flow, pyr_scale, levels, winsize, iterations, poly_n, poly_sigma, flags)
u=flow[...,0]
v=flow[...,1]
在 Java(使用 org.bytedeco.javacpp)中,计算光流非常简单,但我在计算各自的u和v变量时遇到了麻烦。
假设以下Java代码:
calcOpticalFlowFarneback(image1, image2, flow, pyr_scale, levels, winsize, iterations, poly_n, poly_sigma, flags);
如果我没有弄错有关流垫对象的任何信息:
流矩阵包含 2 帧之间的运动梯度。对于原始帧中的每个像素位置,通道包含 dx 和 dy,因此 prev_x + dx = cur_x,并且 prev_y + dy = cur_y。- calcopticalflowfarneback 答案
因此,为了提取分别对应于 dx 和 dy的u和v向量(如果我很傻,请纠正我),我需要拆分Mat流对象的两个不同通道。
我怎样才能做到这一点?到目前为止,我已经尝试了一些方法但没有成功。在最新的opencv版本中似乎发生了很多变化,并且此页面上的先前答案对我没有帮助。
青春有我
相关分类