如何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