Код начального уровня, необходимый для отображения кадра с помощью vfw?

Я хочу отображать захваченный кадр с моей веб-камеры с помощью библиотеки vfw.h. У меня есть код, который захватывает один кадр и сохраняет его в файл растрового изображения. Тем не менее, я не знаю, как затем отобразить этот растровый файл в окне. Я только знаю, как отображать видео в реальном времени в окне. Заранее извиняюсь за вероятную очевидность этого вопроса, но у меня очень мало опыта в этом типе программирования. Может ли кто-нибудь посоветовать мне, как отобразить захваченный кадр в другом окне, для дальнейших манипуляций, например, как использовать соответствующие макросы? Я использую C ++ в Visual Studio.

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

0

Решение

Чтобы отобразить растровое изображение, вы сначала создаете «обработанный» растровый объект, который приводит к удержанию HBITMAP значение, которое API принимают для дальнейших манипуляций, а затем вы фактически отображаете его.

Первый шаг достигается с помощью CreateBitmap и друзья.

На втором смотрите Отображение HBITMAP.

0

Другие решения


По вопросам рекламы [email protected]