用opencv操作高清摄像头

来源:互联网 发布:阿里云 优客工场 编辑:程序博客网 时间:2024/04/27 22:55


1、  添加相关的参数

CvCapture*m_Video;//获取摄像头

IplImage* m_frame;//当前摄像头的内容

bool isOpenCa;//是否打开了摄像头

2、  记得在析构函数中销毁生成的对象

if(isOpenCa == TRUE)

                   cvReleaseCapture(&m_Video);

3、  初始化打开摄像头的操作

GetDlgItem(IDC_MODEL_START)->SetWindowText(_T("关闭"));

m_Video = cvCreateCameraCapture(1);//打开摄像头

if (!m_Video) {

           AfxMessageBox("请先打开摄像头");

           return;

}

isOpenCa = TRUE;

cvSetCaptureProperty(m_Video,CV_CAP_PROP_FRAME_WIDTH , 1280);

cvSetCaptureProperty(m_Video,CV_CAP_PROP_FRAME_HEIGHT, 1024);

         SetTimer(1,100,NULL);//设置定时器

4、  添加定时器

m_frame =cvQueryFrame(m_Video);//m_Frame是IplImage指针类型

if (m_frame == NULL)

           cvReleaseCapture(&m_Video);

ShowImage(m_frame, IDC_MODEL_CUT);

         CDialogEx::OnTimer(nIDEvent);

5、  showImage()代码

voidModelAcquire::ShowImage( IplImage* img, UINT ID )     // ID 是Picture Control控件的ID号

{

// 获得显示控件的 DC

CDC* pDC = GetDlgItem(ID) ->GetDC();

// 获取 HDC(设备句柄) 来进行绘图操作

HDC hDC = pDC->GetSafeHdc();                                

 

CRect rect;

GetDlgItem(ID)->GetClientRect( &rect );

//复制图片

CvvImage cimg;

cimg.CopyOf(img);

// 将图片绘制到显示控件的指定区域内

cimg.DrawToHDC(hDC, &rect);     

ReleaseDC(pDC);

}