2013-06-17 3 views
1

Пожалуйста, посмотрите на следующий кодКак получить средний результат двух последовательных кадров?

#include <iostream> 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 

using namespace std; 
using namespace cv; 

int main() 
{ 
    VideoCapture *camera = new VideoCapture(); 

    camera->open(0); 



    if(!camera->isOpened()) 
    { 
     cout << "No Camera" << endl; 
     return -1; 
    } 

    Mat image,blur,image2; 

    namedWindow("Video"); 




    while(true) 
    { 

     *camera>>image; 
     *camera>>image2; 

     //Show default image 
     imshow("Video",image); 


     if(waitKey(30)>=0) 
     { 
      break; 
     } 

    } 


    return 0; 
} 

меня знать, что я могу уменьшить видео в режиме реального времени вывода веб-камеры на 70%, если мне удастся get the average output of two consecutive frames. Я получил два последовательных кадра с использованием

  *camera>>image; 
      *camera>>image2; 

Теперь, как я могу получить среднее значение этого и отобразить его?

Пожалуйста, помогите.

ответ

3

Для cv::Mat, вы можете сделать это следующим образом:

Mat img_mean=0.5*image+0.5*image2; 
imshow("Average",img_mean); 
+0

удивительным. Я никогда не думал, что смогу сделать такие простые операции с изображениями для выхода камеры! –

+1

Доступны многие матричные выражения. Проверьте [документацию] (http://opencv.willowgarage.com/documentation/cpp/operations_on_arrays.html). – William

Смежные вопросы