Проблема: я пытаюсь выровнять два кадра движущегося видео.
Я в настоящее время пытаюсь использовать функцию "cvCalcOpticalFlowLK" и выходные векторы скорости результата X и Y в форме "CvArr".
Таким образом, я получил результат, но я не уверен, как использовать эти векторные массивы.
Мой вопрос - это..., как я знаю то, что скорость каждого пикселя? Это - просто значение каждого пиксельного значения в той конкретной точке?
Примечание: Я использовал бы другие оптические функции потока, такие как cvCalcOpticalFlowPyrLK (), поскольку это намного легче, но я хочу плотный оптический поток.
По-видимому, мое первоначальное предположение было верным. Выходы «velx» и «vely» функции оптического потока являются фактическими скоростями для каждого значения пикселя. Чтобы лучше всего их извлечь, я получил доступ к пикселю из необработанных данных и извлек значение. Есть два способа сделать это.
cvGet2D () - этот способ медленнее, но если вам нужен только 1 пиксель, ничего страшного.
или
(uchar *) (image-> imageData + height * image-> widthStep + width);
(изображение - это IplImage, ширина и высота - это просто соответствующие ширина и высота изображения)