从Point2f提取数据
Extract data from Point2f
我正在开发一个代码,需要找到一个红色的块。我使用minEnclosingCircle
函数来获得图像的中心。
函数给出中心的方式是矢量格式vector<Point2f>center( contours.size() );
。但是我需要这些数据来确定感兴趣的区域(ROI)。有没有一种方法可以让我从这个点提取数据,这样我就可以在一个整数中得到X和Y的两个坐标?
谢谢!
——更新
我将发布一些代码,试图更好地解释我想做什么:
vector<vector<Point> > contours_poly( contours.size() );
vector<Point2f>center( contours.size() );
vector<float>radius( contours.size() );
for( int i = 0; i < contours.size(); i++ )
{
approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true );
minEnclosingCircle( (Mat)contours_poly[i], center[i], radius[i] );
}
因此,一旦我从图像中获得轮廓,我应用minEnclosingCicrle
函数来确定中心。我是OpenCV的新手。我假设它找到的圆心保存在这个点f的向量中。我想做的是访问这些点,以获得我的对象的位置,以确定对象周围的ROI。
从您的评论
假设我有20个圆,我知道第15个圆是最大的。我想知道中心[15]的X和Y位置,它是一个点f,但在一个向量内。
没有边界检查:
float x = center[15].x;
float y = center[15].y;
带边界检查:
float x = center.at(15).x;
float y = center.at(15).y;
关于向量的边界,如果索引是>= center.size()
,你就越界了。所以你可以自己检查:
int idx = 15;
if (idx < center.size())
{
// OK to access with index 15
}
请注意,索引从0
开始,所以这里您访问的是第16个点。
如果你使用IDE的话你可以直接输入
Point2f p;
p.
和IDE将帮助您完成类的适当字段。
如果你写的程序没有智能自动完成,你可以在opencv的源代码中看到(这部分代码来自opencv源代码,并根据许可证发布,你可以在opencv网站和源代码中找到):
typedef Point_<float> Point2f;
....
template<typename _Tp> class CV_EXPORTS Point_{
....
_Tp x, y; //< the point coordinates
minEnclosingCircle返回一个中心作为Point2f和半径,不确定你是如何得到一个矢量…?
在任何情况下,您都可以直接访问Point2f的坐标,因为它们是公共成员。
Point2f a;
int x = (int)a.x;
int y = (int)a.y;
相关文章:
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 模式匹配文本并提取C++中的数据
- JPG-如何从ICC配置文件部分APP2读取/提取数据
- 如何从多维向量中提取数据
- 从异构列表中提取数据
- 是否可以将多个结构作为一个数据包存储在一个函数中,然后传递给其他函数并在那里提取?
- 从 Windows 中的其他应用程序 GUI 中提取数据
- 如何从 qwebengineview qt5.9 中提取数据
- 将文本文件数据读入字符数组时提取运算符的歧义
- 如何从shared_ptr<T&>的引用中提取数据
- 从自定义结构数组中提取数据
- 需要根据读取的数据类型将ifstream提取到单独的数组中
- 从第 x 列提取到 y 列,从第 1 行到第 2 行提取 csv 数据 c++
- 无法从结构数组 C++ 中提取数据
- 如何解决系统.Zip.TZipFile.ExtractAll无法从.zip文件中提取所有数据的问题
- 提取肮脏的RGB像素缓冲区数据Directx
- STL矢量数据提取
- 将文件中的逐行数据提取到C++中的动态数组中
- 提升精神 X3:将数据提取到 x3::变体<...> 始终为空
- Web数据提取和表单填写