加入收藏 | 设为首页 | 会员中心 | 我要投稿 大庆站长网 (https://www.0459zz.com/)- 科技、智能边缘云、事件网格、云计算、站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – OpenCV光流断言

发布时间:2020-11-17 23:27:35 所属栏目:Python 来源:互联网
导读:我试图跟踪通过dsift与 python 2.7和openCV 2.4.11获得的面部特征轮廓的地标.我想跟踪帧之间的这些功能. 但是我收到以下错误.我已检查输入图像是1通道相等尺寸(和无符号8位类型),同样与prev点: OpenCV Error: Assertion failed ((npoints = prevPtsMat.check

我试图跟踪通过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 ......modulesvideosrclkpyramid.cpp
cv2.error: ......modulesvideosrclkpyramid.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代表点数.

这应该工作.

(编辑:大庆站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读