相关的代码:
void CMFC_VedioDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if(!pCapture)
{
pCapture = cvCaptureFromCAM(0);
pFrame = cvQueryFrame(pCapture);
drawToDC(pFrame, IDC_Open);
}
SetTimer(IDC_BUTTON1, 10, NULL);
}
void CMFC_VedioDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
SetTimer(IDC_BUTTON2, 10, NULL);
}
void CMFC_VedioDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int i, j;
switch(nIDEvent)
{
case IDC_BUTTON1:
{
if(m_bOpenCamera)
{
pFrame = cvQueryFrame(pCapture);
drawToDC(pFrame, IDC_Open);
}
break;
}
case IDC_BUTTON2:
{
IplImage* pGray = cvCreateImage(cvGetSize(pFrame), 8, 1);
cvCvtColor(pFrame, pGray, CV_BGR2GRAY);
cvCanny(pGray,pGray,100,255,3);
drawToDC(pGray, IDC_DEAL);
cvReleaseImage(&pGray);
break;
}
}
CDialogEx::OnTimer(nIDEvent);
}
void CMFC_VedioDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值c
cvReleaseCapture(&pCapture);
cvReleaseImage(&pFrame);
KillTimer(IDC_BUTTON1);
KillTimer(IDC_BUTTON2);
CDialogEx::OnClose();
}
void CMFC_VedioDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnOK();
}
PS:参考这个博客写的代码:http://www.cnblogs.com/leven20061001/archive/2012/10/17/2727865.html
运行10分钟程序就报错了,好郁闷呀!