2014-11-12 7 views
0

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

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 и друзей.

На втором, см. Displaying HBITMAP.