2016-10-09 4 views
-4

Ich habe diesen Code 100 Bilder mitteln und in 10 JPEG-DateienWie man diese Schleife bricht?

int main(int argc, char** argv) 
{ 
    VideoCapture cap("C:/Pics/test_%d.jpeg"); 
    while (cap.isOpened()) 
    { 
     Mat img; 
     cap.read(img); 
     // process(img); 
     if (img.empty()) break; 

     for (int i = 0; i < 10; i++) 
     { 
      Mat avgImg(480, 640, CV_32FC3, Scalar()); 
      for (int avgnumb = 10 * i; avgnumb < (10 * i) +10; ++avgnumb) 
      { 
       cv::accumulate(img, avgImg); 
      } 
      avgImg = avgImg/10; 
      avgImg.convertTo(avgImg, CV_8UC3); 
      char filename[100]; 
      sprintf(filename, "C:/AvgPics/test_%d.jpeg", i); 
      imwrite(filename, avgImg); 
     } 
    } 

    return 0; 
} 

jedoch zu retten, auch nach Beendigung der neunten Datei zu speichern, ist es nicht brechen und weiterhin die gespeicherte Datei wieder und wieder zu überschreiben. Kann mir jemand dabei helfen? Danke vielmals.

+0

Entfernen Sie die "while" – Amit

+0

Sie haben 2 Schleifen. Du hast die 'while' vergessen? – PaulMcKenzie

+0

Warum haben Sie eine Format-Zeichenfolge für den 'VideoCapture'-Objektkonstruktor? Was wird das Argument zu diesem "% d" sein? Wo stellst du es ein? –

Antwort

0

Ich bin ein Idiot. Entfernen Sie einfach die while

+0

Das ist die richtige Antwort! Ich ... ich meine natürlich den zweiten Teil. – xinaiz

Verwandte Themen