UINT CFlyCapThrDlg::GrabLoop(void)
{
// ¿µ»ó ȹµæÀ» À§ÇÑ FlyCapture API ÄÚµå
FlyCaptureError error; // Error ÄÚµå ±¸Á¶Ã¼
error = flycaptureCreateContext(&pContext); // Context »ý¼º
error = flycaptureInitialize(pContext, 0); // Ä«¸Þ¶ó ÃʱâÈ
error = flycaptureStart( pContext, FLYCAPTURE_VIDEOMODE_ANY, FLYCAPTURE_FRAMERATE_ANY);
pImageBGR.pixelFormat = FLYCAPTURE_BGR;
pImageBGR.pData = new unsigned char[2248*2048*3];
while(m_ThreadContinue) // ¿¬¼ÓÀûÀ¸·Î À̹ÌÁö¸¦ ȹµæÇϱâ À§ÇÑ ¹Ýº¹
{
flycaptureGrabImage2(pContext,&pImage); // À̹ÌÁö ȹµæ
flycaptureConvertImage(pContext,&pImage,&pImageBGR);
// ȹµæÇÑ À̹ÌÁö RGB ÇüÅ·Πº¯È¯
// FlyCapture API¸¦ ÅëÇÏ¿© ȹµæÇÑ ¿µ»óÀ» ´ÙÀ̾ó·Î±×¿¡ Display Çϱâ À§ÇÑ ÄÚµå
CDC *pDC;
BITMAPINFO bitmapInfo;
pDC=GetDC();
bitmapInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bitmapInfo.bmiHeader.biPlanes=1;
bitmapInfo.bmiHeader.biCompression=BI_RGB;
bitmapInfo.bmiHeader.biXPelsPerMeter=100;
bitmapInfo.bmiHeader.biYPelsPerMeter=100;
bitmapInfo.bmiHeader.biClrUsed=0;
bitmapInfo.bmiHeader.biClrImportant=0;
bitmapInfo.bmiHeader.biWidth=pImage.iCols;
bitmapInfo.bmiHeader.biHeight=-pImage.iRows;
bitmapInfo.bmiHeader.biBitCount=24;
bitmapInfo.bmiHeader.biSizeImage=0;
::StretchDIBits( pDC->GetSafeHdc(),0, 0, pImage.iCols, pImage.iRows, 0, 0, pImage.iCols, pImage.iRows, pImageBGR.pData, &bitmapInfo, DIB_RGB_COLORS, SRCCOPY );
}
SetEvent(m_heventThreadDone); // À̺¥Æ®¸¦ Set ÇÔ
return 0;
} |