목적: Hitachi CCD Camera 사용(FD-202SCL)
원인: 본 카메라는 3CCD Camera로써, BayFilger가 존재하지 않지만,
해당 소스에서 BayBuf를 사용하여 흑백으로 화면이 표시됨.
해결: MbufBayer -> 사용하지 않음
문제부 소스
////////////////////////////////////////////////////////////////////////////////////////////////
// FD-202SCL is 3CCD Camera system. It has a 3CCD Camera type. So It haven't bayer filter.
// If you want to use for your ccd image, you don't need to MBufBayer function in MIL Library.
#ifdef _FD_202SCL_HITACHI_CCD_CAMERA
// not use.
#else
MbufBayer(pDlg->m_MilIdImgField[g_nBufCpyIndex],pDlg->m_MilIdImg, pDlg->m_MilIdWBCoefficients, pDlg->ConversionType+M_WHITE_BALANCE_CALCULATE);
EnterCriticalSection(&g_csWhiteBalance);
#ifdef _MIL_90
if(pDlg->m_bUse_AVERAGE_2X2)
MbufBayer(pDlg->m_MilIdImgField[g_nBufCpyIndex],pDlg->m_MilIdImg, pDlg->m_MilIdWBCoefficients, pDlg->ConversionType/* +M_AVERAGE_2X2*/);
else
MbufBayer(pDlg->m_MilIdImgField[g_nBufCpyIndex],pDlg->m_MilIdImg, pDlg->m_MilIdWBCoefficients, pDlg->ConversionType +M_ADAPTIVE);
#else
MbufBayer(pDlg->m_MilIdImgField[g_nBufCpyIndex],pDlg->m_MilIdImg, pDlg->m_MilIdWBCoefficients, pDlg->ConversionType +M_ADAPTIVE);
#endif
LeaveCriticalSection(&g_csWhiteBalance);
#endif
/////////////////////////////////////////////////////////////////////////////////////////////////////////
해당 소스부 .h
1. MIL_ID m_MilIdImg; // Image buffer identifier
.cpp
m_MilIdImg = M_NULL; // Image buffer identifier
MbufClear(m_MilIdImg, 0);
// Solios 사용.
pSystem = "\\\\.\\M_SYSTEM_SOLIOS ;
// Main Mil Sys 할당
MsysAlloc((char*)pSystem, M_DEF_SYSTEM_NUM, M_COMPLETE | M_DDRAW, &m_MilIdSys);
MdigControl(m_MilIdDig, M_GRAB_MODE, M_ASYNCHRONOUS); //must M_ASYNCHRONOUS
MdigControl(m_MilIdDig, M_GRAB_TIMEOUT , 1000);
MdigHookFunction(m_MilIdDig, M_GRAB_START, HookFrameEnd, (void *)(this)); // 데이터 취득 함수설정
MdigHookFunction(m_MilIdDig, M_GRAB_END, HookGrabEnd, (void *)(this)); // 취득 함수 설정
// 3 band (r,G,B) grab x/y size 설정, MildImg 저장.
MbufAllocColor(m_MilIdSys, 3, m_nGrabSizeX, m_nGrabSizeY, 8 + M_UNSIGNED, M_IMAGE + M_DISP + M_GRAB + M_PROC, &m_MilIdImg);
//Allocate from dcf file. szDCFFile = Camera 사용 DCF files.
MdigAlloc(m_MilIdSys, M_DEFAULT, (MIL_TEXT_PTR)szDCFFile, M_DEFAULT, &m_MilIdDig);
// band acquire
long band ;
band = MdigInquire(m_MilIdDig, M_SIZE_BAND, M_NULL);
// mil 데이터 취득.
#ifdef _FD_202SCL_HITACHI_CCD_CAMERA
MdigGrab(pDlg->m_MilIdDig, pDlg->m_MilIdImg);
#else
MdigGrab(pDlg->m_MilIdDig, pDlg->m_MilIdImgField[g_nBufIndex]);
#endif