#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;
(То есть, если вам действительно нужно изолировать их от самой структуры.)