Python scipy.signal.sepfir2d中的类型错误

Python scipy.signal.sepfir2d中的类型错误,python,image-processing,opencv,scipy,opticalflow,Python,Image Processing,Opencv,Scipy,Opticalflow,我试图计算光流的导数(参考文献),在计算时遇到了类型错误 我首先在《使用OpenCV》中阅读了这段视频,并使用它的光流方法找到了速度。然后我使用scipy.signal库对速度运行高斯滤波器并计算导数 cv.CalcOpticalFlowLK(prev_frame, curr_frame, (11, 11), velx, vely) # ... convert velx and vely to numpy arrays ... # Set up the gaussian filter and

我试图计算光流的导数(参考文献),在计算时遇到了类型错误

我首先在《使用OpenCV》中阅读了这段视频,并使用它的光流方法找到了速度。然后我使用scipy.signal库对速度运行高斯滤波器并计算导数

cv.CalcOpticalFlowLK(prev_frame, curr_frame, (11, 11), velx, vely)

# ... convert velx and vely to numpy arrays ...

# Set up the gaussian filter and its derivative.
sigmaBlur = 1
sigmaGrey = 4
gBlurSize = 2 * np.around(2.5 * sigmaBlur) + 1
x = np.mgrid[1:gBlurSize + 1] - np.around((gBlurSize + 1) / 2)
gFilt = np.exp(-(x ** 2) / (2 * (sigmaBlur ** 2)))
gFilt /= np.sum(gFilt)
gxFilt = (-x / (sigmaBlur ** 2)) * gFilt

# Now calculate the derivative of the velocity.
res = scipy.signal.sepfir2d(velx, gxFilt, gFilt)

# ... 3 more calls to sepfir2d ... #
不幸的是,在调用sepfir2d时,我得到了以下错误:

TypeError: array cannot be safely cast to required type

它是非常稀疏的,我找不到很多其他使用它的例子。sepfir2d的三个参数都是numpy数组;velx是一个矩阵,gxFilt和gFilt都是相同长度的向量(我认为在本例中为5)你知道为什么会发生类型错误吗?

经过大量测试(查看sepfir2d的源代码一点帮助都没有),问题在于我的
velx
vely
使用32位浮点原语,而它们需要64位。这就解决了问题。

经过大量测试(查看sepfir2d的源代码一点帮助都没有),问题在于我的
velx
vely
使用32位浮点原语,而它们需要64位。这就解决了它。

为了它的价值,scipy.signal.seqfir2d似乎是一种相当奇怪的方法。。。你为什么不能使用一种更常见的路径,例如,
scipy.ndimage.gaussian\u gradient\u magnity
,等等?我实际上在讨论如何使用它,但我无法仅从文档中判断它是否是我所需要的。它和我上面写的代码做的一样吗?(我对光流领域还很陌生,所以请随意详细解释)对于它的价值,
scipy.signal.seqfir2d
似乎是一种相当奇怪的方式。。。你为什么不能使用一种更常见的路径,例如,
scipy.ndimage.gaussian\u gradient\u magnity
,等等?我实际上在讨论如何使用它,但我无法仅从文档中判断它是否是我所需要的。它和我上面写的代码做的一样吗?(我对光流领域还不太熟悉,所以在解释过程中,请随意长篇大论)