用是vs2013新建一個空的 mfc項目,配置該項目的屬性。讓該項目可以調用opencv的庫以及相關函數。
//CMFCapplication12345Dlg 這個是主類名
void CMFCApplication12345Dlg::openCamer(){VideoCapture Capture(0);if (!Capture.isOpened()){return;}Mat frame;camersta = false;//打開狀態while(!camersta){Capture >> frame;if (frame.rows != 0)img = &frame.Operator iplImage();DrawToMFC(IDC_STATIC, img);}}UINT CMFCApplication12345Dlg::OnDis1(LPVOID param)//處理線程{CMFCApplication12345Dlg *pDemo = (CMFCApplication12345Dlg *)param;pDemo->openCamer();return 0;}void CMFCApplication12345Dlg::OnBnClickedButton1() //打開攝像頭 按鈕{// TODO: 在此添加控件通知處理程序代碼AfxBeginThread(OnDis1, this);//為什么要用線程。 //從打開攝像頭的方式看,用了while。 程序陷入死循環。此時想點擊關閉按鈕,無響應。}void CMFCApplication12345Dlg::OnBnClickedButton2()//關閉按鈕 做的事情{// TODO: 在此添加控件通知處理程序代碼camersta = true;}void CMFCApplication12345Dlg::DrawToMFC(int Ctrol_ID, IplImage *pImage){CDC* pDC = GetDlgItem(Ctrol_ID)->GetDC();HDC hDC = pDC->GetSafeHdc();CvvImage cimg;cimg.CopyOf(pImage);CRect rect;GetDlgItem(Ctrol_ID)->GetClientRect(&rect);cimg.DrawToHDC(hDC, &rect);ReleaseDC(pDC);}
新聞熱點
疑難解答