Point2f向量的最小值和最大值

用户名

我想从Point2f点的向量中找到矩形的四个角。

这些点将是具有各自值的max和min x值,其他两个角将是具有各自y值的max y值。

到目前为止,我找到了x和y的最大值和最小值。我试图弄清楚如何使这些最大值与它们的其他值重新组合,所以我有四个x,y点。这可能吗?

编辑:矩形相对于图片视图成一定角度。

这是我目前的代码,并且运行良好:

vector<cv::KeyPoint> keypoints;
blob_detector->detect(backproj_dilate, keypoints);

vector<Point2f> XY;
for (size_t i=0; i<keypoints.size(); i++){ 
    XY.push_back(keypoints[i].pt);

}

float X, Y;
float maxX= 0;
float minX = 10000;
float maxY= 0;
float minY = 10000;
for(size_t i=0; i<keypoints.size(); i++){
    X = XY[i].x;
    Y = XY[i].y;
    if( X > maxX){
        maxX = X;
    }
    if( X < minX){
        minX = X;
    }
    if( Y > maxY){
        maxY = Y;
    }
    if( Y < minY){
        minY = Y;
    }

}

除了您当前的结构,例如:

struct vector2 { float x, y; };
struct key_point { vector2 pt; };

您可能拥有一个包含所有四个角的矩形结构:

struct rect {
    vector2 top_left;
    vector2 top_right;
    vector2 bottom_left;
    vector2 bottom_right;
};

然后您可以使用以下命令填充它们:

std::vector<key_point> key_points;
auto x_comparator = [](auto const& a, auto const& b) { return a.pt.x < b.pt.x; };
auto y_comparator = [](auto const& a, auto const& b) { return a.pt.x < b.pt.x; };

float max_x = boost::max_element(key_points, x_comparator)->pt.x;
float min_x = boost::min_element(key_points, x_comparator)->pt.x;
float max_y = boost::max_element(key_points, y_comparator)->pt.y;
float min_y = boost::min_element(key_points, y_comparator)->pt.y;
auto rectangle = rect{
    {min_x, min_y},
    {max_x, min_y},
    {min_x, max_y},
    {max_x, max_y}
};

Live demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

最小值和最大值

来自分类Dev

从向量的向量列中获取最小值和最大值

来自分类Dev

根据向量的最小值和最大值创建重复列的矩阵

来自分类Dev

如何在C ++中获得向量复数值的最大值,最小值和位置?

来自分类Dev

使用 apply 计算向量列表的最大值和最小值

来自分类Dev

F#中类型的最大值/最小值

来自分类Dev

F#中类型的最大值/最小值

来自分类Dev

获取Clojure中的最大值和最小值

来自分类Dev

查找函数的最小值和最大值

来自分类Dev

数组中的Java最小值和最大值

来自分类Dev

在列表中交换最大值和最小值

来自分类Dev

使用最小值和最大值的置信带

来自分类Dev

使用awk的最大值和最小值

来自分类Dev

列表集合中的最小值和最大值

来自分类Dev

在.json中查找最大值和最小值

来自分类Dev

awk查找数组的最小值和最大值

来自分类Dev

SQL本地最小值和最大值

来自分类Dev

dygraph:显示最大值和最小值

来自分类Dev

SQL查询最小值和最大值

来自分类Dev

Google图表上的最大值和最小值

来自分类Dev

确定滑块范围的最小值和最大值

来自分类Dev

每组的最小值和最大值

来自分类Dev

gnuplot:如何绘制最大值和/或最小值

来自分类Dev

铲斗以最大值和最小值排序

来自分类Dev

列的最大值和最小值之间的差异

来自分类Dev

熊猫的最大值和最小值

来自分类Dev

每组保持顺序的最小值和最大值

来自分类Dev

地址范围的最小值,最大值和步长

来自分类Dev

数学最小值和最大值返回NaN