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

如何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++ --------------------编程问答-------------------- http://www.codeproject.com/Articles/15537/Camera-Vision-video-surveillance-on-C --------------------编程问答-------------------- 别用dat_imagenativexfer,建议用dat_imagememxfer。
这样很适合你的应用场景。编写流程跟你现在实现差不多。 
去搜索引擎 去找找,应该有写好的代码 。 --------------------编程问答--------------------
引用 2 楼 zealot112345 的回复:
别用dat_imagenativexfer,建议用dat_imagememxfer。
这样很适合你的应用场景。编写流程跟你现在实现差不多。 
去搜索引擎 去找找,应该有写好的代码 。

为什么用DAT_IMAGEMEMXFER? 我网上搜了好久,实时显示的源码和资料找不到,都是一些单帧采集的例程,我也自己试了很多写法,不知道你有什么线索吗? --------------------编程问答--------------------
引用 1 楼 guwei4037 的回复:
http://www.codeproject.com/Articles/15537/Camera-Vision-video-surveillance-on-C

可以简单解说一下吗?我看了一下里面的代码,好像不是Twain的东西.
补充:.NET技术 ,  组件/控件开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,