您的位置 首页 Python

python – OpenCV光流断言

我试图跟踪通过dsift与
python 2.7和openCV 2.4.11获得的面部特征轮廓的地标.我想跟踪帧之间的这些功能.

但是我收到以下错误.我已检查输入图像是1通道相等尺寸(和无符号8位类型),同样与prev点:

OpenCV Error: Assertion failed ((npoints = prevPtsMat.checkVector(2,CV_32F,tru
e)) >= 0) in cv::calcOpticalFlowPyrLK,file ..\..\..\modules\video\src\lkpyramid.cpp
cv2.error: ..\..\..\modules\video\src\lkpyramid.cpp:845: error: (-215) (npoints
= prevPtsMat.checkVector(2,true)) >= 0 in function cv::calcOpticalFlowP
yrLK

导致问题的行:

new_pts,ttl,err = cv2.calcOpticalFlowPyrLK(self.old_img,i_img,i_old_pts,None)

有谁知道我可以在哪里开始调试这个?

解决方法

当我进行基于光流的跟踪时,我遇到了同样的问题.我尝试了很多不同的方法来解决这个问题.但徒劳无功.

最后,有一个示例程序,他们使用shi-tomsi角点检测跟踪,这些点在LK算法中使用,并且它工作得很好.所以我探讨了Shi-Tomsi探测器输出的数据类型和尺寸,我确保跟踪的点数属于同一类型.它开玩笑了!

这是你需要知道的.

>确保图像为灰度.
>你的坐标参数i_old_pts应该是单精度浮点数,意思是float32.这种类型可以使用numpy. python中的float是float64
>坐标参数i_old_pts(来自你的程序)应该是一个numpy数组,其维度为(n,1,2),其中n代表点数.

这应该工作.

关于作者: dawei

【声明】:金华站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

热门文章