gpt4 book ai didi

C++动态 vector 创建

转载 作者:行者123 更新时间:2023-11-28 06:19:07 25 4
gpt4 key购买 nike

我在 opencv、c++ 中使用 kmeans 聚类。我正在尝试为找到的每个集群创建一个新 vector ,并将结果点添加到它。

我有:

    vector<cv::Point2f> markerOne;
vector<cv::Point2f> markerTwo;
vector<cv::Point2f> markerThree;
vector<cv::Point2f> markerFour;

Mat labels, centers;

int attempts = 50, numberClusters = 4, flags = cv::KMEANS_PP_CENTERS;
TermCriteria tc;

kmeans(centroids, cNumber, labels, tc, attempts, flags, centers);

for (int i = 0; i < labels.rows; i++)
{
int idx = labels.at<int>(i);
Point2f original_point = centroids[i];
Point2f clustered_center;
clustered_center.x = centers.at<float>(idx, 0);
clustered_center.y = centers.at<float>(idx, 1);

我在这里需要做的是根据此循环中返回的 idx 值创建一个 vector 。我现在有:

if (idx == 0)
{
markerOne.push_back(original_point);
}

if (idx == 1)
{
markerTwo.push_back(original_point);
}
if (idx == 2)
{
markerThree.push_back(original_point);

}
if (idx == 3)
{
markerFour.push_back(original_point);
}

最多可能有 100 个集群,因此我正在寻找一种更动态的方法来执行此操作。

谢谢!

最佳答案

创建一个 vector 的 vector 结构并将点插入相应的 vector ,如下所示:

std::vector<std::vector<Point2f> >  vector_of_vector(labels.rows);
for (int i = 0; i < labels.rows; i++)
{
vector_of_vector[i].push_back(original_point);

}

关于C++动态 vector 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29610259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com