|
음~^^ 질문을 잘 이해를 못하겠습니다.
일단 아래는 카메라에서 영상을 화면에 출력하는 겁니다.
아래는 320x240 hicolor로 지정되어있는데(define부분) 캡쳐보드가
지원하는 포멧이으로 바꾸어야 작동하겠지요.
이걸 말씀하시는건가 ?...
HWND hWndC;
BITMAPINFO bmpi;
CAPDRIVERCAPS dcaps;
#define BITCOUNT 16
#define USEW 320
#define USEH 240
LRESULT FAR PASCAL FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{
SetDIBitsToDevice(Form1->Canvas->Handle,
0,0,bmpi.bmiHeader.biWidth,bmpi.bmiHeader.biHeight,
0,0,0,bmpi.bmiHeader.biHeight,
lpVHdr->lpData, &bmpi, DIB_RGB_COLORS);
return true;
}
void start()
{
hWndC = capCreateCaptureWindow("...",WS_CHILD|WS_VISIBLE,2,2,
1,1,Form1->Handle,1);
bool test=capDriverConnect(hWndC,0);
if(!test){
ShowMessage("영상 입력장치를 사용할수 없습니다.");
}
int s=capGetVideoFormatSize(hWndC);
capGetVideoFormat(hWndC,&bmpi,s);
bmpi.bmiHeader.biWidth=USEW;
bmpi.bmiHeader.biHeight=USEH;
bmpi.bmiHeader.biBitCount=BITCOUNT;
bmpi.bmiHeader.biSizeImage=
bmpi.bmiHeader.biWidth*bmpi.bmiHeader.biHeight*bmpi.bmiHeader.biBitCount/8;
capSetVideoFormat(hWndC,&bmpi,s);
capSetCallbackOnFrame(hWndC,FrameCallbackProc);
capOverlay(hWndC,false);
capPreview(hWndC,false);
capPreviewRate(hWndC,10); //초당 10 frame
}
.끝.
thedragon 님이 쓰신 글 :
: 올리신 소스를 보고 제가 이렇게 만들었는데요........
: 소스 보시면 짐작은 하시겠지만.
:
: SetDIBitsToDevice( TmSendVideoBmp->Canvas->Handle, 0, 0, xSize, ySize, 0, 0, 0, ySize, lpVHdr->lpData, &bmpi, DIB_RGB_COLORS );
:
: TmSendJpg->Assign( TmSendVideoBmp );
: TmSendJpg->SaveToStream( TmSendVideoMStream );
:
: //=========================================================================================================
: TmSendVideoMStream->Position = 0;
: Form2->PaintBox1->Canvas->Draw(0, 0, TmSendJpg);
:
: 근데 아래에 Form2->PaintBox 부분에서 이미지가 안뿌려져요..,.ㅠ,.ㅠ
: 저만 그런건지.....하여간.......안되네요.....
: 요거 하기 전에 윗부분에서 캡쳐하는 부분에 따로 파라메터를 줘야 하는게 있는데 빠진건지.....
: 아님 첫번째 소스부분에 문제가있는건지.....모르겠어요.........
: 좀 부탁드릴께요........
: 알려주세요.....
|