2016-10-07 125 views
1

现在我有:增加每个连续的循环

Mat avgImg(480, 640, CV_32FC3, Scalar()); // Create and zero initialize 
Mat capturedImg; 
for (framenumb = 0; framenumb < 10; ++framenumb) 
{ 
    // avgImg.create(480, 640, CV_32FC3); // Don't create each time! 
    capturedImg = images[framenumb]; 
    cv::accumulate(capturedImg, avgImg); 
} 
avgImg = avgImg/100; 
avgImg.convertTo(avgImg, CV_8UC3); 
imshow("averaged", avgImg); 

我怎样才能让这个在for循环值将在每次停止循环播放时间增加。例如,在10幅图像被累积并平均后,循环将自动更改为for (framenumb = 10; framenumb < 20; ++framenumb)以拍摄下10幅图像,依此类推。

+1

划分图像的数量,你怎么会知道什么时候停止? – Mureinik

+0

记录循环到达另一个变量的次数,并将循环更改为'for(framenumb = 10 * number_of_times; framenumb Peter

回答

1

东西一样简单:

for(int i = 0; i < NUM; i++) { 
    Mat avgImg(480, 640, CV_32FC3, Scalar()); // Create and zero initialize 
    Mat capturedImg; 
    for (framenumb = 10 * i; framenumb < (10 * i) + 10; ++framenumb) { 
     // avgImg.create(480, 640, CV_32FC3); // Don't create each time! 
     capturedImg = images[framenumb]; 
     cv::accumulate(capturedImg, avgImg); 
    } 

    avgImg = avgImg/100; 
    avgImg.convertTo(avgImg, CV_8UC3); 
    imshow("averaged", avgImg); 
} 

NUM由10

+0

首先,谢谢非常多的答案。但是,当我用99张照片测试它时,它仅显示99张图像,而不是9张平均图像。代码似乎是正确的,所以我不知道为什么会出现这个问题 – DeniseT

+0

Oh nvm,事实证明我只是忘记包含[framenumb] for capturedImg – DeniseT