openCV C++ 将对象/斑点减少到质心
Posted
技术标签:
【中文标题】openCV C++ 将对象/斑点减少到质心【英文标题】:openCV C++ reduce objects/blobs to centroids 【发布时间】:2018-09-28 11:49:43 【问题描述】:任务:
我尝试编写一种方法,将二值图像中的对象减少到它们的质心(即质心)。
【问题讨论】:
【参考方案1】:参数:
Mat *pMA_Out, Mat *pMA_In, int mode, int method, unsigned int thickness
正文:
//Allocate contours
vector<vector<Point>> vvp_countours;
//Find countours
findContours(
*pMA_In,
vvp_countours,
mode,
method,
Point(0, 0));
//Get the moments
vector<Moments> v_moments(vvp_countours.size());
for(int c = 0; c < vvp_countours.size(); c++)
v_moments[c] = moments(vvp_countours[c], false);
//Get the mass centers
vector<Point2f> v_centroid(vvp_countours.size());
for(int c = 0; c < vvp_countours.size(); c++)
v_centroid[c] = Point2f(
v_moments[c].m10 / v_moments[c].m00,
v_moments[c].m01 / v_moments[c].m00);
//Create output image
Mat MA_tmp = Mat(pMA_In->size(), CV_8UC1, Scalar(0));
//Draw centroids
for(int c = 0; c < v_centroid.size(); c++)
line(
MA_tmp,
v_centroid[c],
v_centroid[c],
Scalar(255),
thickness,
8);
*pMA_Out = MA_tmp.clone();
【讨论】:
以上是关于openCV C++ 将对象/斑点减少到质心的主要内容,如果未能解决你的问题,请参考以下文章