В программе OpenCV C ++ у меня есть функция с этим телом.
for (int ii=0; ii< static_cast<int>(parks.size()); ii++)
{
PolygonVertices temp = parks.at(ii).getPoly();
const Point *pts = (const cv::Point*) Mat(parks.at(ii).getPoly()).data;
int npts = Mat(parks.at(ii).getPoly()).rows;
for (int jj=0; jj<npts; jj++)
{
cout<<"----"<<jj<<"----"<<endl;
cout<<"x: "<<pts[jj].x<<", y: "<<pts[jj].y<<endl;
cout<<"x: "<<temp[jj].x<<", y: "<<temp[jj].y<<endl;
cout<<"--------"<<endl;
}
}
}
Polygonvertices
- это тип, определенный как typedef std::vector<cv::Point>
, а метод getPoly()
возвращает такую структуру.
Я передаю данные Polygonvertices
(являющиеся вектором Point
) на указатель типа Point
.
Точки выбираются с помощью мыши.
Проблема заключается в том, что при печати координат x
и y
как элемента указателя, так и исходного элемента для первого элемента (индекс 0) данные, поступающие из указателя, сдвигаются.
Например,это вывод:
----0----
x: -1871319456, y: 21975
x: 286, y: 304
--------
----1----
x: 325, y: 218
x: 325, y: 218
--------
----2----
x: 375, y: 280
x: 375, y: 280
Как видите, первый элемент полностью смещен?
Что происходит?Является ли приведение неверным?
Это происходит с использованием OpenCV4 под Ubuntu 18.04.