Я пишу программу, использующую OpenCV и Kinect v2 SDK, где я встретил неудобную проблему. Я получил векторы Point2i (класс, состоящий из int X, Y) в качестве индексов пикселей, и мне нужно преобразовать его в depthSpacePoint (структуру, состоящую из float32 X, Y), которая является просто depthSpacePoints.X = Point2i.X; или наоборот.Эффективно конвертировать данные из opencv
Существует так много элементов, что запись цикла for будет слишком медленной.
Так что я задаюсь вопросом, есть ли какой-либо метод, например memcpy или другой, чтобы сделать это быстрее?
Вот краткое моего кода:
cv::findnonZeros(Mat A, vector<cv::Point2i> B);
vector<depthSpacePoint> C(B.size());
for(int i= 0; i < B.size(); ++i){
C[i].X = b[i].x;
C[i].Y = B[i].y;
}
icoordinateMapper(C.size(),C,...,...);
< - это причина, почему я преобразовать его, так как эта функция библиотека принимает только свой собственный тип данных depthSpacePoint;
как вы получаете баллы? возможно, их можно получить как «Point2f»? – slawekwin
Может быть, я могу использовать findNonzeros (Mat, vector), используя Point2f, может стоить памяти, я думаю, что это компромисс, который я должен принять. –
Newb