我需要追踪多个物体,这些物体是一些颜色相同的附着在人体上的物体。我可以通过使用阈值图像
和矩
来追踪一个物体,但当我使用多个物体时,计算出的矩
会介于这两个或三个物体之间。我需要每个物体的xy
坐标。实际上,在所有这些坐标序列上,我想要进行一些分析。我正在使用VS2010、OpenCV 2.3.1和Win7 x64。
我需要追踪多个物体,这些物体是一些颜色相同的附着在人体上的物体。我可以通过使用阈值图像
和矩
来追踪一个物体,但当我使用多个物体时,计算出的矩
会介于这两个或三个物体之间。我需要每个物体的xy
坐标。实际上,在所有这些坐标序列上,我想要进行一些分析。我正在使用VS2010、OpenCV 2.3.1和Win7 x64。
cv :: findContours
获取每个blob的轮廓形式的描述符,然后使用它来计算其时刻。在以下代码片段中,受这个示例的启发,展示了如何使用这种方法计算每个blob的质心。std::vector<std::vector<cv::Point> > contours;
std::vector<cv::Vec4i> hierarchy;
// Find contours
cv::findContours(img, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0));
// Get the moments
std::vector<Moments> mu(contours.size() );
for(int i = 0; i < contours.size(); i++)
mu[i] = moments(contours[i], false);
// Get the mass centers:
std::vector<cv::Point2f> mc(contours.size());
for(int i = 0; i < contours.size(); i++)
mc[i] = Point2f(mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00);