0

vfw.h ライブラリを使用して、Web カメラからキャプチャしたフレームを表示できるようにしたいと考えています。単一のフレームをキャプチャしてビットマップ ファイルに保存するコードがあります。ただし、このビットマップ ファイルをウィンドウ内に表示する方法がわかりません。ウィンドウ内にライブ ビデオ フィードを表示する方法しか知りません。この質問が自明である可能性が高いことを前もってお詫びしますが、私はこの種のプログラミングの経験がほとんどありません。キャプチャしたフレームを別のウィンドウに表示する方法、さらに操作する方法、つまり関連するマクロの使用方法の例を教えてもらえますか? Visual Studio で C++ を使用しています。

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;
}
4

1 に答える 1

0

ビットマップを表示するには、最初に「処理される」ビットマップ オブジェクトを作成します。これにより、HBITMAPAPI がさらに操作するために受け入れる値が保持され、実際に表示されます。

最初のステップは、およびフレンドを使用して達成さCreateBitmapれます。

2 つ目は、Displaying HBITMAPを参照してください。

于 2014-12-18T11:46:53.690 に答える