我用cv2.calcOpticalFlowFarneback()
做了一个小测试来检查结果的稳定性。
在我的测试中,我通过相机拍摄了快照,剪切了两张重叠的图像,它们之间的距离为(0,10)
。
我预计每个像素都会(0,10)
,但结果却大不相同。
import cv2
cap = cv2.VideoCapture(0)
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('gray', gray)
left = gray[:-5, :]
right = gray[5:, :]
flow = cv2.calcOpticalFlowFarneback(left, right, 0.5, 3, 15, 3, 5, 1.2, 0)
flowx = flow[:,:,0]
flowy = flow[:,:,1]
cv2.imshow('flowx', flowx)
cv2.imshow('flowy', flowy)
print 'x.mean:', flowx.mean()
print 'x.max:', flowx.max()
print 'x.min:', flowx.min()
print 'y.mean:', flowy.mean()
print 'y.max:', flowy.max()
print 'y.min:', flowy.min()
cv2.waitKey()
结果:
x.mean: -0.00440598979749
x.max: 1.53141
x.min: -1.95973
y.mean: -2.53464987664
y.max: 0.844686
y.min: -5.43879
如何让它更接近我预期的(0,10)
结果?