목적: 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

+ Recent posts