前面提到用线程打开了摄像头程序。现在我们该如何去关闭它。该程序是在线程内的一个死循环,如果循环过程中来监听某一变量的变化,做条件来结束循环。即该线程也结束。
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;
}