Как получить доступ к каждому числовому элементу в типе cv::Point_?

#c #opencv #c 11 #point

Вопрос:

У меня есть объект cv::Rect. Исходя из этого, я получаю нижнюю правую точку прямоугольника. Я хочу разделить точечный объект на две отдельные int переменные. Как мне это сделать?

Это то, что у меня есть до сих пор:

 cv::Rect rectangle;
bottomRight = rectangle.br() // this gives me a Point <int>, such as [545, 364]
 

Я хочу bottomRight разделить его на две координатные точки как разные переменные int, такие как:

 // bottomRight is [545, 364]
bottomRight_x = bottomRight[0] // should be 545
bottomRight_y = bottomRight[1] // should be 364
 

Когда я пытаюсь создать индекс, я получаю эту ошибку:

тип «Point_» не содержит оператора подстрочного индекса

В Python я бы просто подписался, как указано выше. Как мне это сделать на C ?

Комментарии:

1. Слишком ленив, чтобы открыть Visual Studio прямо сейчас… Разве нет bottomRight.x и bottomRight.y ?

2. docs.opencv.org/3.4/db/d4e/classcv_1_1Point__.html Похоже x , и y являются публичными.

Ответ №1:

Координаты x и y cv::Point_<T> структуры хранятся в public виде переменных-членов (типа T ), называемых x и y (а не в виде массива из 2 элементов).

Итак, ваш код должен быть:

 // bottomRight is [545, 364]
bottomRight_x = bottomRight.x;
bottomRight_y = bottomRight.y;
 

(То есть, если вам действительно нужно изолировать их от самой структуры.)