前面提到用線程打開了攝像頭程序。現在我們該如何去關閉它。該程序是在線程內的一個死循環,如果循環過程中來監聽某一變量的變化,做條件來結束循環。即該線程也結束。
bool CcamShowDlg::CameraOpen()
{
capture.open(0);
if (capture.isOpened() == 0)
{
AfxMessageBox(_T("攝像頭初始化失敗"));
return false;
}
while (CameraState == TRUE)
{
Mat frame;
capture >> frame;
imshow("VideoShow",frame);
waitKey(30);
}
capture.release();
cvDestroyWindow("VideoShow");
return false;
}
void CcamShowDlg::OnBnClickedButtonCameraopen()
{
// TODO: 在此添加控件通知處理程序代碼
CameraState = TRUE;
CWinThread* pThread;
pThread = AfxBeginThread(ThreadFunc,this);
}
void CcamShowDlg::OnBnClickedButtonCameraclose()
{
// TODO: 在此添加控件通知處理程序代碼
CameraState=FALSE;
}