Перейти к содержимому
Compvision.ru
Mariya

Усреднение кадров видеопотока (EmguCV)

Recommended Posts

Как можно сделать усреднение n-кадров видеопотока (EmguCV)?

Есть простая идея. Как правильно суммировать?

        int n = 10;
        Mat img_sum = new Mat();
        Mat img_m = new Mat();

        for (int i = 1; i <= 10; ++i)
        {
        capture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.PosFrames, i);
        capture.Read(m);
            
         //нужно подсчитать сумму
                
        }

        img_m = img_sum / n;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Классически делается при помощи взвешенной суммы addWeigted с коэффициентом 1/n , где n - количество усредняемых кадров. 

Можно использовать как усреднение в видеопотоке.  Описание тут: http://www.emgu.com/wiki/files/3.1.0/document/html/180ae243-ff3c-f59c-7e3a-a8e474583e8e.htm 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо. Не очень понятен метод AddWeighted. Может быть, есть примеры суммирования n-изображений?


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я на шарпе не пишу, на C++ это было бы так, конвертировать матрицы в тип float при помощи convertTo, затем просто суммировать S=S+m и в конце разделить на количество кадров S=S/n.

Или применить addWeighted 

beta = ( 1.0 - alpha );
addWeighted( src1, alpha, src2, beta, 0.0, dst);
alpha в вашем случае 1/n src2=dst , src1 - новое изображение с камеры. dst - буфер где будет вычисляться среднее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×