您的位置:首页 > 运维架构

OpenCV(一) 打开一个摄像头

2013-03-12 18:30 281 查看
最近要打开一个摄像头,然后使用OpenCV的cvCreateCameraCapture(-1)函数发现打开摄像头失败。我的电脑系统是Win7,然后我拿到XP系统下去运行,发现可以打开摄像头。

下面顺便贴出代码VC6.0的一个MFC工程

void CMyDlg::OnFileOpen()

{

// TODO: Add your control notification handler code here

cvNamedWindow("video", 1);

pCapture = cvCreateCameraCapture(-1);

SetTimer(1,100,NULL); //每隔一段时间读出一帧视频图像

}

void CMyDlg::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

pFrame=cvQueryFrame(pCapture);

CDC *pDC = GetDlgItem(IDC_srcp)->GetDC();//根据ID获得窗口指针再获取与该窗口关联的上下文指针

HDC hdc= pDC->GetSafeHdc(); // 获取设备上下文句柄

CRect rect; // 矩形类

GetDlgItem(IDC_srcp)->GetClientRect(&rect); // 获取box1客户区

CvvImage cimg; //

cimg.CopyOf(pFrame,1); //参数1代表通道数,故此ShowPicture(int nID, IplImage *Image)函数只能显示单通道图像

cimg.DrawToHDC(hdc,&rect); //输出图像

ReleaseDC( pDC );

cimg.Destroy(); //销毁

CDialog::OnTimer(nIDEvent);

}

void CMyDlg::OnCancelMode()

{

CDialog::OnCancelMode();

// TODO: Add your message handler code here

}

以上在XP系统下可以正常打开摄像头,只是在Win7打开时失败。下一篇介绍使用DirectShow可以打开多个摄像头。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: