我正在使用C ++中的Kinect SDK生成空间平面附近的点图像,目标是将它们用作触摸。我附上了该过程结果的3倍比例图像,以便所有肉汁。
我的问题是如何最好地使用OpenCV从此图像(以及类似图像)生成帧到帧的blob以用于触摸。这是我在ProcessDepth回调中尝试的内容,其中img是触摸图像的单色cv :: Mat,而out是一个空的cv :: Mat。
cv::Canny(img,out,100,200,3);
cv::findContours(out,contours,cv::RETR_TREE,cv::CHAIN_APPROX_SIMPLE,cv::Point(0,0));
mu.resize(contours.size());
mc.resize(contours.size());
for(int i = 0; i<contours.size();i++){
mu[i] = cv::moments(contours[i],true);
}
for(int i = 0; i<contours.size();i++){
mc[i] = cv::Point2f(mu[i].m10/mu[i].m00, mu[i].m01/mu[i].m00);
}
(我会发布更多代码,但VMWare很难让我复制粘贴,如果你想要更多,请问。)
在这一点上,我认为我应该为一个框架获得blob的质量中心,但在实践中,它不在那里。当contour.size()返回大于0时,我得到错误,或者稍微修补一下,我得到的时刻似乎很奇怪,包含大的负数。所以我的问题如下:
作为参考,我在我的OpenCV下载和this example中的一些例子中喋喋不休。
如果您需要其他信息以便更好地回答,请告诉我,我会尽力提供,谢谢!