MFC中调用opencv里摄像头的实例

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/teleger/article/details/54881418

用是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);
}

展开阅读全文

没有更多推荐了,返回首页