python – OpenCV光流断言

前端之家收集整理的这篇文章主要介绍了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代表点数.

这应该工作.

猜你在找的Python相关文章