Сначала часть вычислительного центра:
Итак, я использую OpenCV для обнаружения QR-кода на камере или видео, для этого Я использую класс QRCodeDetector, чтобы получить ограничивающую рамку QR-кода, для этого я использую метод detect () для поиска QR-кода, и он возвращает ограничивающую рамку с областью QR-кода. Я хочу вычислить центр этого ограничивающего прямоугольника, но я не знаю, как это сделать с данными, возвращаемыми из метода. описание метода detect () , в основном это говорит:
bool cv::QRCodeDetector::detect ( InputArray img,
OutputArray points
) const
Parameters
**img** grayscale or color (BGR) image containing (or not) QR code.
**points** Output vector of vertices of the minimum-area quadrangle containing the code.
В примере кода это dr aws ограничивающая рамка ( здесь ) вот эта строка:
line(im, Point2i(bbox.at<float>(i,0),bbox.at<float>(i,1)), Point2i(bbox.at<float>((i+1) % n,0), bbox.at<float>((i+1) % n,1)), Scalar(255,0,0), 3);
и вот описание этого метода:
void cv::line ( InputOutputArray img,
Point pt1,
Point pt2,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0
)
где pt1 - первая точка отрезка, а pt2 - вторая точка отрезка.
Итак, pt1 здесь Point2i (bbox.at (i, 0), bbox.at (i, 1))
И pt2 равно Point2i (bbox.at ((i + 1)% n, 0), bbox.at ((i + 1)% n, 1))
Я хотел узнать, что это за деталь Point2i (ну, насколько я понимаю, это тип, но bbox.at я понятия не имею, что он делает).
Поэтому я не знаю, как получить центр этого ограничивающего прямоугольника.
.
.
А теперь часть ориентации:
Используя центр ограничивающей рамки, я затем создаю 2 точки слева и справа от центра, однако, поскольку QR-код не будет в той же ориентации, всегда эти точки будут меняться, но я не знаю, как узнать ориентацию QR-кода, то, что я нашел, подсказывает мне использовать контуры Open CV как здесь но я ищу уже созданную функцию, потому что то, что я сделал бы с использованием контуров, было бы очень плохо оптимизировано. Поскольку идея состоит в том, чтобы заставить его работать в прямом эфире с камеры, я хочу, чтобы он обрабатывался достаточно быстро, когда происходят другие вещи. Итак, есть идеи по этому поводу?
РЕДАКТИРОВАТЬ: Для ориентации я просто подумал об идее: если я могу получить положение центра, я могу использовать эти координаты плюс координаты из правого верхнего угла (для пример), чтобы разместить две другие точки, которые я хочу, справа и слева от кода qr. Когда я узнаю, как получить центр, я выясню, как именно это сделать.
Спасибо за любой ввод,