2017-09-25 1 views
0

gut Ich entwickle Bildverarbeitungsanwendungen in qt und dlib und opencv aber wenn in einer Qtwidget-Anwendung, wo ich codiert, nachdem ich den Code ausführen und alles ist gut, wenn der Code beendet und ich drücke die Schließen-Taste von qt Hauptfenster die Hauptfenster schließt, aber die Anwendung muss ich nicht manuell den Code stoppen es passiert, wenn ein dlib Code in der App über den Code i ausgeführt wurde Öffnen Sie einfach eine Webcam und GesichtserkennungDlib-Code in QtCreator in Windows geschrieben wird nicht beendet, während qt Hauptfenster wurde

while(frame_counter<100) 
{ 
cv::Mat temp; 
cap >> temp; 
cv_image<bgr_pixel> cimg(temp); 
full_object_detection shape; 
std::vector<dlib::rectangle> faces = detector(cimg); 
std::vector<full_object_detection> shapes; 
for (unsigned long i = 0; i < faces.size(); ++i) 
      { 
shape = pose_model(cimg, faces[i]); 
} 
win.clear_overlay(); 
win.set_image(cimg); 
win.add_overlay(render_face_detections(shape)); 
} 

Ich weiß nicht, warum es eine Idee ist?

Antwort

0

Wenn Sie diese Zeile im Code haben:

while() 
{ 
} 

Dann wird es nie die Schleife ausbrechen, müssen Sie irgendeine Art von ereignisgesteuerten Code. Sie benötigen ot Ihre einzige Schleife Graben und stattdessen Timer Ticks oder Ereignisse verwenden, um Ihre Kamera-Capture-Code zu fahren und dann ein Ereignis für QApplication :: beenden()

void frmMain::closeEvent(QCloseEvent *) { 
    QApplication::quit(); 
} 
+0

ich etwas tatsächlich aus der while-Schleife zu erhalten, nachdem zeigt 100 Frames wird es aus while-Schleife herauskommen, und wenn ich den quit() hinzufügen, schließt das Hauptfenster, aber der Prozess läuft noch – arash

Verwandte Themen