2017-09-25 4 views
0

よく私はqtとdlibとopencvで画像処理アプリケーションを開発しています しかしqtwidgetアプリケーションでコードを実行した後、コードが終了し、がメインウィンドウの閉じるボタンを押すとmainwidowが終了しますが、アプリケーションでコードを手動で停止する必要はありません dlib関連のコードがアプリで実行されたときに発生します コードについてウェブカメラを開いて顔検出を行うだけです。WindowsのQtCreatorで書かれた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() 
{ 
} 

そして、それはループから抜け出すことは決してありませんが、あなたは、イベント駆動型のコードのいくつかの並べ替えを必要とします。あなたは、単一のループを捨て、代わりにあなたのカメラのキャプチャコードを駆動し、その後はQApplicationのためのイベントにタイマーティックやイベントを使用otの必要::終了()

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

私が実際に表示した後、whileループから抜け出すために何かを持っています100フレームがwhileループから抜け出し、quit()を追加すると、メインウィンドウは閉じますが、プロセスはまだ実行されています – arash

関連する問題