//图像卡LEFT
//打开图像卡
status = BeginCGCard(LEFT+1, &hCGCard[LEFT]);
if ( ! CG_SUCCESS(status)){
AfxMessageBox("CGCard Init Failed!");
}
//源路为复合视频一
Source.type = COMPOSITE_VIDEO;
Source.nIndex = 1;//第二路信号QP300
// Source.nIndex = 0;//第一路信号CG300
CG_VERIFY(CGSetVideoSource(hCGCard[LEFT], Source));
//晶振, 默认为35M
CryOsc = CRY_OSC_28M; //QP300
// CryOsc = CRY_OSC_35M; //CG300
CG_VERIFY(CGSelectCryOSC(hCGCard[LEFT], CryOsc));
//图像卡2
//打开图像卡
status = BeginCGCard(MID+1, &hCGCard[MID]);
if ( ! CG_SUCCESS(status)){
AfxMessageBox("CGCard Init Failed!");
}
..................其他的都一样
///////////////////////////////////////////
//使用静态内存保存图象,先访问其大小,如果访问失败则退出操作
if (CGGetStaticMem(&BlockSize) != CG_OK ){
AfxMessageBox("Error in StaticMem Access!");
return false;
}
//灰度图像
// BufLength = WIDTH *HEIGHT;
//锁定全部保留静态内存给图像卡使用
CG_VERIFY(CGStaticMemLock(0, BlockSize*4096, &MemHandle, (void **)&LineAddr));
//第二幅及第三幅图像的偏移量
for(int i=0;i<=2;i++)
dwOffset[i]=IMG_WIDTH*IMG_HEIGHT*i;
//开始抓图
CG_VERIFY(CGStartSnap(pApp->hCGCard[LEFT], pApp->dwOffset[LEFT], TRUE, 1));
CG_VERIFY(CGStartSnap(pApp->hCGCard[MID], pApp->dwOffset[MID], TRUE, 1));
CG_VERIFY(CGStartSnap(pApp->hCGCard[RIGHT], pApp->dwOffset[RIGHT], TRUE, 1));
注意点:
1,通道设置为1,不是0;
2,晶振为28M,不是35M;
3,不同的摄像头的图像保持到不同的线性内存中。
另外,我是用定时器来抓取图像的。