首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

摄像头预览有关问题

2012-02-28 
摄像头预览问题 - C++ Builder / Windows SDK/API高手帮忙看看下面的代码,摄像头预览的,点击按钮后就假死

摄像头预览问题 - C++ Builder / Windows SDK/API
高手帮忙看看下面的代码,摄像头预览的,点击按钮后就假死状态了,大概半分钟后panel上显示一片绿色,这时候程序还是很卡,拖一下半天才有反应。摄像头应该没问题,qq可以视频。我单步跟踪了一下,是卡在 bool res = capDriverConnect(hWndC,0);这一句上面。不知是何原因?

C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender){ hWndC = capCreateCaptureWindow (        (LPSTR) "My Capture Window", // window name if pop-up        WS_CHILD | WS_VISIBLE, // window style        0, 0, 320, 240, // window position and dimensions        (HWND)Panel2->Handle,//(HWND)Application->Handle,//(HWND) hwndParent,        ComboBox1->ItemIndex+1);//(int) nID /* child ID */);    //连接设备:    bool res = capDriverConnect(hWndC,0);  // bool res = SendMessage (hWndC, WM_CAP_DRIVER_CONNECT, 0, 0L);    capPreviewRate(hWndC, 50); // rate, in milliseconds    capPreview(hWndC, TRUE); // starts preview    //获取视频驱动相关性能    capDriverGetCaps(hWndC, &CapDrvCaps, sizeof (CAPDRIVERCAPS));    //获取捕获窗口状态    capGetStatus(hWndC, &CapStatus, sizeof (CAPSTATUS));    SetWindowPos(hWndC, NULL,        0,        0,        CapStatus.uiImageWidth,        CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE);}


[解决办法]
如果你的摄像头有硬件上的开关的话,当然得先开开关,如果没有的话就不用了,他会自动的链接你可用的摄像头驱动,用 capPreviewRate(hWndC, 50); // rate, in milliseconds
capPreview(hWndC, TRUE); // starts preview

就可以实现预览。

检查一下m_hCapWnd是否大于0,视频采集窗口是否创建成功。再用capGetDriverDescription看看ID为0的视频驱动器是否可用。

热点排行