2017-09-25 90 views
0

以及我正在開發圖像處理應用程序在qt和dlib和opencv ,但是當我運行代碼後,我編碼的qtwidget應用程序,罰款代碼完成時,我點擊qt mainwindow的關閉按鈕mainwidow關閉,但應用程序不需要手動停止代碼 它發生在dlib相關的代碼已經運行在應用程序 關於代碼我只需打開攝像頭並做臉部檢測用QtCreator在windows中編寫的dlib代碼不退出,而qt mainwindow已退出

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)); 
} 

我不知道爲什麼會發生任何想法?

回答

0

如果您有這行代碼:

while() 
{ 
} 

那麼它永遠不會破環了,你需要某種事件驅動的代碼。您需要OT溝的單迴路,而使用計時器滴答或事件來驅動你的相機捕捉代碼,然後一個事件的QApplication ::退出()

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

我有事出後居然走出while循環100幀,它會離開while循環,如果我添加quit(),主窗口關閉,但進程仍在運行 – arash