我正在使用开放框架和opencv来跟踪网络摄像头上的blob。我得到blob质心的x值并跟踪它。问题是,它跳了一下,我想知道是否有更好的方法来计算一定数量的帧上的平均位置,并使用该数字,它都是在draw()函数中计算的。
void testApp::draw(){
ofVec2f centroid = contourFinder.blobs[0].centroid;
int width = ofGetWidth();
float pct = (float)centroid.x / (float)width;
float totFrame = fingerMovie.getTotalNumFrames ();
float gotFrame = totFrame * pct;
}
答案 0 :(得分:0)
你应该为N帧创建一个循环,对你得到的所有坐标求和,然后除以N.
我对ofx没有经验,但必须有一个函数才能获得下一帧。
循环结束后,将摄像机移动到平均坐标并重新初始化循环。