OpenCV(一) 打开一个摄像头

最近要打开一个摄像头,然后使用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可以打开多个摄像头。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值