MFC中多线程显示相机捕获图片

  • 值得注意的是图像控件ID不可以出现在线程函数中,所以在主类里再单独定义一个函数用于显示图像,然后在线程函数中调用它。
  • 一、首先在主类中声明图像显示函数
    void DrawPicToHDC(IplImage *img, UINT ID);
    PGRGuid guid;
    BusManager busMgr;
    Error error = busMgr.GetCameraFromIndex(0, &guid);
    Camera cam;
    IplImage *image = NULL;
    Image rawImage;
    Image convertedImage;
    void show_check();
    CStatic m_pic;
  • 在主类外部声明函数UINT ThreadFunc(LPVOID lpParam):
UINT ThreadFunc(LPVOID lpParam);
  • 二、在cpp文件本里声明运行控制变量m_bRun和定义show_check()函数:
volatile BOOL m_bRun;
void CtestDlg::show_check()
{
        Error error = cam.Connect(&guid);

        if (error != PGRERROR_OK)
        {
            AfxMessageBox(_T("相机连接失败!"));
        }
        while (m_bRun == TRUE)
        {

            // Start capturing images
            cam.StartCapture();
            cam.RetrieveBuffer(&rawImage);

            // Create a converted image
        rawImage.Convert(PIXEL_FORMAT_MONO8, &convertedImage);
        pimage = cvCreateImage(cvSize(1024, 768), IPL_DEPTH_8U, 1);
            (pimage->imageData) = (char*)(convertedImage.GetData());
            DrawPicToHDC(pimage, IDC_PIC);
            cvReleaseImage(&pimage);
        }

}
  • 三、添加开始和结束按钮响应函数:
void CtestDlg::OnBnClickedStart()
{
    error = cam.Connect(&guid);
    if (error != PGRERROR_OK)
    {
        AfxMessageBox(_T("相机连接失败!"));
    }

    cam.StartCapture();
    m_bRun = TRUE;
    GetDlgItem(IDC_START)->EnableWindow(FALSE);
    GetDlgItem(IDC_STOP)->EnableWindow(TRUE);
    hThread = AfxBeginThread(ThreadFunc,
        this);//创建一个新线程ThreadFunc
}

void CtestDlg::OnBnClickedStop()
{
    cam.StopCapture();
    error = cam.Disconnect();
    if (error != PGRERROR_OK)
    {
        AfxMessageBox(_T("相机断开失败!"));
    }
    m_bRun = FALSE;
    GetDlgItem(IDC_START)->EnableWindow(TRUE);
    GetDlgItem(IDC_STOP)->EnableWindow(FALSE);
}
  • 四、定义线程函数:
UINT ThreadFunc(LPVOID lpParam)
{
    CtestDlg* pInfo = (CtestDlg*)lpParam;//固定格式
    pInfo->show_check();//调用图像显示函数
    return 0;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hu2703411/article/details/49910889
个人分类: MFC学习笔记
想对作者说点什么? 我来说一句

深入浅出MFC.pdf

2008年11月21日 12.78MB 下载

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

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭