当前位置:编程学习 > C#/ASP.NET >>

如何Twain编程(VC++) 实现数字摄像头的实时显示(camera preview)

如何Twain编程(VC++) 实现数字摄像头的实时显示(camera preview)?

现在只能实现单帧采图的功能,代码简单如下所示:
1、获取DSM_Entry函数指针
   m_hDSMDLL = LoadLibrary("TWAIN_32.DLL");
   m_lpDSMEntry = (DSMENTRYPROC)GetProcAddress(m_hDSMDLL, MAKEINTRESOURCE(1));

2、打开数据源管理器SourceManager
   rc = (*m_lpDSMEntry)(&m_AppId, NULL, DG_CONTROL, DAT_PARENT, 
       MSG_OPENDSM,  (TW_MEMREF)&m_hWnd/*指定数据源Source的父窗口的句柄*/);

3、选择数据源Source
   rc = (*m_lpDSMEntry)(&m_AppId, NULL, DG_CONTROL, DAT_IDENTITY, 
       MSG_USERSELECT, (TW_MEMREF)&m_SourceId);

4、打开数据源Source
   rc = (*m_lpDSMEntry)(&m_AppId, NULL, DG_CONTROL, DAT_IDENTITY, 
       MSG_OPENDS, (TW_MEMREF)&m_SourceId);

5、启动数据源Source
   TW_USERINTERFACE twUserInterface;
   twUserInterface.ShowUI = FALSE; // 不显示用户界面
   twUserInterface.ModalUI = TRUE;
   twUserInterface.hParent = (TW_HANDLE)m_hWnd;
   rc = (*m_lpDSMEntry)(&m_AppId, &m_SourceId, DG_CONTROL, DAT_USERINTERFACE,
       MSG_ENABLEDS, (TW_MEMREF)&twUserInterface);

6、传输图像数据
   HANDLE hBitmap = NULL;
   rc = (*m_lpDSMEntry)(&m_AppId, &m_SourceId, DG_IMAGE, DAT_IMAGENATIVEXFER,
       MSG_GET, (TW_MEMREF)&hBitmap); // 利用Native模式传输图像

7、告知数据源Source已经成功接收图像
   TW_PENDINGXFERS twPendingXfer;
   rc = (*m_lpDSMEntry)(&m_AppId, &m_SourceId, DG_CONTROL, 
       DAT_PENDINGXFERS, MSG_ENDXFER, &twPendingXfer); 

8、Disable Source
   rc = (*m_lpDSMEntry)(&m_AppId, &m_SourceId, DG_CONTROL,
       DAT_USERINTERFACE, MSG_DISABLEDS, (TW_MEMREF)&twUserInterface);


为了实时显示,我现在暂时用了不是办法的办法:就是在不断的循环5~8的流程,但是实时性是很差的。
不知道真正的Twain实时显示应该怎么写?? Twain 实时显示 camera preview 数字摄像头 VC++
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,