你的位置:IT服务网Win7粉丝网 >> win7 >> win7主题 >> 详细内容 在线投稿

Win7下使用VFW库连接摄像头

热度23票 浏览76次 时间:2010年7月21日 15:18

2009年12月16日

  VFW库在XP下很好用,可是移到Vista或者Win7下,不正常了.首先是摄像头设备连接不上,再有摄像头显示巨细不克不及变.

  1. HWND m_hWndCap = capCreateCaptureWindow(Name, WS_VISIBLE | WS_CHILD, left, top, width, height, hWnd, 1);

  其中Name是子窗体名称, 第2个参数是窗口样式,这里是可见+字窗口,后面四个参数是窗口显示位置和巨细,hWnd是父窗口句柄,最后一个参数窗口ID,返回值为新建窗体句柄

  2. capDriverConnect(m_hWndCap, 0),这里0是指默认摄像头设备,可是如果您的电脑上有多个摄像头,就要用循环了:

  for(int Index=0; Index<MAX_VFW_DEVICES;Index ++){

  if(capGetDriverDescription(Index,szDeviceName,size of(szDeviceName),szDeviceVersion,

  sizeof(szDeviceVersion))){

  try{

  if(capDriverConnect(m_hWndVideo,Index)){

  m_ValidDriverIndex[m_TotalVideoDrivers]=Index;

  capDriverDisconnect(m_hWndVideo);

  }...

  }

  }

  这里Win7和XP处理上有些不一样,Win7上capDriverConnect需要用死循环,就是把capDriverConnect写到while里。

  3. capPreviewRate(m_hWndCap, 50);设置采集频率,每秒多少帧。

  4. capPreview(hCap, TRUE); 开始采集了,呵呵

  5. 程序退出了别忘了调用:capPreview(hCap, FALSE);

  capDriverDisconnect(m_hWndCap);

  OK,大功告成。

  6.忘了说了,我们怎么操作捕捉到的画面呢?

  答案是使用capSetCallbackOnVideoStream(HWND, CAPVIDEOCALLBACK),其中,HWND是画面显示的子窗体,CAPVIDEOCALLBACK是处理函数地址

  处理函数这么写:

  LRESULT CALLBACK VideoStreamCallbackProc(HWND hWnd,LPVIDEOHDR lpVHdr){

  // 这里新增你自己的处理代码,其中图像数据保存在结构lpVHdr->lpData中

  // 而巨细保存在lpVHdr->dwBytesUsed

  return TRUE;

  }




本文地址:http://www.itfw5.com/win7/?action-category-catid-1;

TAG: win7摄像头不能用
顶:3踩:1
对本文中的事件或人物打分:
当前平均分:-3.17 (6次打分)
对本篇资讯内容的质量打分:
当前平均分:-1.2 (5次打分)
【已经有8人表态】
上一篇 下一篇
发表评论

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】

网络资源