Как извлечь векторы скорости из плотного оптического потока?

Проблема: я пытаюсь выровнять два кадра движущегося видео.

Я в настоящее время пытаюсь использовать функцию "cvCalcOpticalFlowLK" и выходные векторы скорости результата X и Y в форме "CvArr".

Таким образом, я получил результат, но я не уверен, как использовать эти векторные массивы.

Мой вопрос - это..., как я знаю то, что скорость каждого пикселя? Это - просто значение каждого пиксельного значения в той конкретной точке?

Примечание: Я использовал бы другие оптические функции потока, такие как cvCalcOpticalFlowPyrLK (), поскольку это намного легче, но я хочу плотный оптический поток.

7
задан monky822 10 December 2009 в 00:42
поделиться

1 ответ

По-видимому, мое первоначальное предположение было верным. Выходы «velx» и «vely» функции оптического потока являются фактическими скоростями для каждого значения пикселя. Чтобы лучше всего их извлечь, я получил доступ к пикселю из необработанных данных и извлек значение. Есть два способа сделать это.

cvGet2D () - этот способ медленнее, но если вам нужен только 1 пиксель, ничего страшного.

или

(uchar *) (image-> imageData + height * image-> widthStep + width);

(изображение - это IplImage, ширина и высота - это просто соответствующие ширина и высота изображения)

4
ответ дан 7 December 2019 в 14:33
поделиться