gpt4 book ai didi

c++ - 访问 vector 中的数组值并分离 x 和 y 坐标

转载 作者:搜寻专家 更新时间:2023-10-31 02:19:52 24 4
gpt4 key购买 nike

我正在编写一个使用迭代 Lucas-Kanade 方法计算光流的代码:calcOpticalFlowPyrLK() .我有一个可以容纳两个元素的数组 vector ,请参见下面的示例:

vector <Point2f> points[2];

x和y坐标存储在数组中,数组存储在 vector 中。输出数组时,比如cout << points[0] ,坐标当前在屏幕上显示如下:

Output example: [261.837, 65.093]

现在我想提取 x 和 y 坐标,将它们分开并存储在不同的变量中。已经用迭代器尝试了几种方法,但没有结果。如果有人可以帮助我,我将不胜感激,谢谢。

最佳答案

以下示例将 PLK 应用于规则网格并显示如何读取 x 和 y 坐标。这些点存储在 Point2f 类中,使用 vector 类将它们存储在数组中。该类具有您可以直接使用的公共(public) x 和 y 成员。此示例不使用迭代器。

std::vector<cv::Point2f> prevPoints, currPoints;
std::vector<float> error; // stores the SSD error.
std::vector<uchar> status;// stores a flag of successful tracking / I recomend to ignore it.
cv::Mat prevGrayImg,currGrayImg;
// <- insert code for read the images
// initalize grid or the features you want to track
for( int r = 0; r < prevGrayImg.rows;r+=5){
for( int c = 0; c < prevGrayImg.cols;c+=5){
prevPoints.push_back(cv::Point2f(c,r));
}}
// apply pyramidal lucas kanade
cv::calcOpticalFlowPyrLK(prevGrayImg, currGrayImg, prevPoints, currPoints, status, error);
for( unsigned int i = 0; i < prevPoints.size(); i++){
float x0 = prevPoints[i].x;
float y0 = prevPoints[i].y;
float x1 = currPoints[i].x;
float y1 = currPoints[i].y;
}

对于迭代器,它将是:

for( auto i = prevPoints.begin(); i != prevPoints.end(); ++i){
float x0 = i->x; ... a.s.o

关于c++ - 访问 vector<Point2f> 中的数组值并分离 x 和 y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33358634/

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