首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用vfw显示帧需要初学者级别的代码?

使用vfw显示帧需要初学者级别的代码?
EN

Stack Overflow用户
提问于 2014-11-13 05:27:17
回答 1查看 533关注 0票数 0

我希望能够使用vfw.h库显示从我的网络摄像头捕获的帧。我有捕获单个帧并将其保存到位图文件的代码。但是,我不知道如何在窗口中显示这个位图文件。我只知道如何在窗口中显示实时视频源。对于这个问题的可能显而易见的提前道歉,但我在这种类型的编程经验很少。有没有人可以建议我如何在另一个窗口中显示捕获的帧,以便进一步操作,即如何使用相关宏的示例?我在Visual Studio中使用C++。

代码语言:javascript
复制
ShowWindow(camhwnd,SW_SHOW);
SendMessage(camhwnd,WM_CAP_DRIVER_CONNECT,0,0);
SendMessage(camhwnd, WM_CAP_SET_SCALE, true , 0);
SendMessage(camhwnd, WM_CAP_SET_PREVIEWRATE, 66, 0);
SendMessage(camhwnd, WM_CAP_SET_PREVIEW, true , 0);            
SendMessage(camhwnd, WM_CAP_GRAB_FRAME, 0, 0);
//Grab a Frame
        SendMessage(camhwnd, WM_CAP_GRAB_FRAME, 0, 0);
//Copy the frame we have just grabbed to the clipboard
        SendMessage(camhwnd, WM_CAP_EDIT_COPY,0,0);

//Copy the clipboard image data to a HBITMAP object called hbm
        hdc = BeginPaint(camhwnd, &ps);
        hdcMem = CreateCompatibleDC(hdc);
        if (hdcMem != NULL)
        {
            if (OpenClipboard(camhwnd))
            {
                hbm = (HBITMAP) GetClipboardData(CF_BITMAP);
                SelectObject(hdcMem, hbm);
                GetClientRect(camhwnd, &rc);
                CloseClipboard();
            }
        }
//Save hbm to a .bmp file called Frame.bmp
        PBITMAPINFO pbi = CreateBitmapInfoStruct(hwnd, hbm);
        CreateBMPFile(hwnd, "Frame.bmp", pbi, hbm, hdcMem);

        SendMessage(camhwnd,WM_CAP_DRIVER_CONNECT,0,0);
        SendMessage(camhwnd, WM_CAP_SET_SCALE, true , 0);
        SendMessage(camhwnd, WM_CAP_SET_PREVIEWRATE, 66, 0);
        SendMessage(camhwnd, WM_CAP_SET_PREVIEW, true , 0);
        break;
    }
    }
    break;
}
EN

回答 1

Stack Overflow用户

发布于 2014-12-18 19:46:54

要显示位图,首先要创建一个“已处理”的位图对象,这会导致您持有HBITMAP值,API接受这些值以进行进一步的操作,然后实际显示它。

第一步是使用CreateBitmap和朋友实现的。

在第二个页面上,请参见Displaying HBITMAP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26896915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档