我试图跟踪通过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代表点数.
这应该工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。