想抓取摄像头图片,
用vc,vfw做的,查到单帧捕获的函数如下:
capGrabFrameNoStop(m_hCapWnd);
// 截获当前图像
capEditCopy(m_hCapWnd);
// 将图像拷贝到剪贴板
但不知如何保存的到.bmp文件中,各位高手请赐教.

解决方案 »

  1.   

    参考:
    http://www.codeproject.com/system/DigitalCameraConn.asp
      

  2.   

    Using the Sample Grabber
    // Create the Sample Grabber.
    IBaseFilter *pGrabberF = NULL;
    hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,
        IID_IBaseFilter, (void**)&pGrabberF);
    if (FAILED(hr))
    {
        // Return an error.
    }
    hr = pGraph->AddFilter(pGrabberF, L"Sample Grabber");
    if (FAILED(hr)
    {
        // Return an error.
    }
    ISampleGrabber *pGrabber;
    pGrabberF->QueryInterface(IID_ISampleGrabber, (void**)&pGrabber);
    //Set the Media Type
    AM_MEDIA_TYPE mt;
    ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
    mt.majortype = MEDIATYPE_Video;
    mt.subtype = MEDIASUBTYPE_RGB24;
    hr = pGrabber->SetMediaType(&mt);
    // Set one-shot mode and buffering.
    hr = pGrabber->SetOneShot(TRUE);
    hr = pGrabber->SetBufferSamples(TRUE);pControl->Run(); // Run the graph.
    // Find the required buffer size.
    long cbBuffer = 0;
    hr = pGrabber->GetCurrentBuffer(&cbBuffer, NULL);
    char *pBuffer = new char[cbBuffer];
    if (!pBuffer) 
    {
        // Out of memory. Return an error code.
    }
    hr = pGrabber->GetCurrentBuffer(&cbBuffer, (long*)pBuffer);