Jump to content
Compvision.ru
Sign in to follow this  
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;

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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


 

Share this post


Link to post
Share on other sites

Я на шарпе не пишу, на 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 - буфер где будет вычисляться среднее.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×