1
我試圖計算光流的衍生物(如標號in my previous SO question),並在執行計算時遇到TypeError。TypeError in scipy.signal.sepfir2d
我首先使用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
的documentation on the Scipy website極爲稀疏,我找不到它的使用的許多其他例子。 sepfir2d的所有三個參數都是numpy數組; velx是一個矩陣,gxFilt和gFilt都是相同長度的矢量(在這種情況下,我認爲是5)。 任何想法爲什麼類型錯誤正在發生?
對於什麼值得'scipy.signal.seqfir2d'似乎是一個相當奇怪的方式來做到這一點...任何原因,你不能使用一個更常見的路線,例如'scipy.ndimage.gaussian_gradient_magnitude'等? –
我實際上是在辯論這個問題,但是如果這是我所需要的,我無法從文檔中知道。它是否和我上面寫的代碼一樣? (我對光流舞臺相當陌生,所以請隨意解釋爲你喜歡的細節) – Magsol