用是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);}
新闻热点
疑难解答