В настоящее время мне поручено реализовать некоторые действия PTZ для камеры Onvif в C#. Моя камера имеет панорамирование на 360 градусов, угол наклона 220 градусов, горизонтальное поле зрения 63 градуса и вертикальное поле зрения 37 градусов.
В настоящее время у меня есть видео-канал в WPF, который показывает все, что находится внутри поля зрения. Я хочу иметь возможность центрировать камеру в любом месте, где я нажимаю. Я легко могу получить координаты x / y моего клика, но я не уверен, как это преобразовать осмысленно.
API ONVIF принимает векторы Pan и Tilt с X и Y между -1 и 1. Единственные данные, которые я могу собрать о питании камеры, это его текущие вектора X и Y (между -1 и 1), центр видеопотока в X и Y (пикселях), а также X и Y точки, которую я нажимаю.
Я пробовал все вычисления, которые я могу придумать, чтобы получить вектор для относительного или абсолютного перемещения , Я использовал комментарий из этого поста , чтобы вычислить дельту градуса на основе дельты пикселя, но результат даже не кажется близким. Я использовал формулы в этом посте , чтобы получить значение поворота и наклона, но я не совсем уверен, как использовать результаты полезным способом.
Я пытался получить Процент расстояния и применение этого к текущему вектору позиции, и это тоже не сработало.
Я предполагаю, что моя лучшая ставка - найти относительное движение, поскольку найти абсолютный вектор только с полем зрения кажется трудным. Если у кого-то есть понимание того, как я могу рассчитать это без особых проблем, это будет с благодарностью.