社区
机器视觉
帖子详情
如何把VIDEOHDR中的数据显示出来
boya
2002-04-18 12:40:46
请给出全过程,谢谢
...全文
197
2
打赏
收藏
如何把VIDEOHDR中的数据显示出来
请给出全过程,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oldj123
2002-04-30
打赏
举报
回复
天天在网上,有空就探讨探讨,呵呵!
oldj123
2002-04-30
打赏
举报
回复
1、你是用VIDEO FOR WINDOWS得到的VIDEOHDR指针吗??
BOOL CVideoCapView::FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{
////////////////////////////////////////////////////////////////////////
// hWnd: Application main window handle
// lpVHdr: long pointer to VideoHdr struct containing captured
// frame information
//typedef struct {
//LPBYTE lpData; 指向缓冲区的指针
//DWORD dwBufferLength; 缓冲区的长度
//DWORD dwBytesUsed; 缓冲区中使用的字节数
//DWORD dwTimeCaptured; 捕捉时间(毫秒) 与数据流中第一桢的捕捉时间有关
//DWORD dwUser; 32位的特定客户区数据
//DWORD dwFlags; 1、VHDR_DONE 由设备驱动器提供,表明设备驱动器已经完成缓冲,并将缓冲区数据返回给客户区
// 2、VHDR_PREPARED 表明缓冲区是否准备好以便使用
// 3、VHDR_INQUEUE 表明缓冲区已在设备的缓冲区队列中
// 4、VHDR_KEYFRAME 关键桢
//DWORD dwReserved[4]; 保留字,常用做缓冲队列
//} VIDEOHDR;
//////////////////////////////////////////////////////////////////////
if (!ghWndCap)
return FALSE; //若捕捉窗口未被建立返回FALSE
CVideoCapDoc * pDoc=GetDocument();
LPSTR pDIB; //指向DIB数据的指针
pDoc->datasize=lpVHdr->dwBufferLength;//在CVideoCapDoc类中定义的变量,表明缓冲区长度
pDoc->hImgData=(HDIB)::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,pDoc->datasize); //分配一端长度与缓冲区长度相等的内存用于存放DIB数据
if (pDoc->hImgData == 0)
{
AfxMessageBox("memory allocate error", MB_ICONINFORMATION | MB_OK,0);
return FALSE;
}
pDIB=(LPSTR)::GlobalLock((HGLOBAL) pDoc->hImgData); //锁定内存(用pDIB指针指向刚刚分配的内存区域)
memcpy((char *)pDIB,(char *)lpVHdr->lpData,pDoc->datasize); //将缓冲区中的数据拷贝到pDIB指向的内存区域
pDoc->bi=(LPBITMAPINFOHEADER)pDIB; //DIB文件头信息指针
pDoc->ImgHeight=pDoc->bi->biHeight; //DIB图像高度
pDoc->ImgWidth=pDoc->bi->biWidth; //DIB图像高度
pDoc->LineBytes=WIDTHBYTES(pDoc->ImgWidth*pDoc->bi->biBitCount);//DIB图像每行的字节数
pDoc->docsize.cx=(int)30*pDoc->LineBytes;
pDoc->docsize.cy=(int)16*pDoc->ImgHeight;
pDoc->UpdateAllViews(NULL,0,NULL); //更新所有视
::GlobalUnlock(pDoc->hImgData); //解锁
// wsprintf(gachBuffer, TEXT("Preview frame# %ld "), gdwFrameNum++) ;
// ::SetWindowText(ghWndFrame, (LPTSTR)gachBuffer) ;
return (LRESULT) TRUE ;
}
我在文档类里定义了DIB信息,
BITMAPFILEHEADER bf;
LPBITMAPINFOHEADER bi;
CBitmap bm;
CSize docsize;
CString filename;
HBITMAP hBitmap;
HDIB hImgData;
DWORD NumColors;
DWORD LineBytes;
DWORD ImgWidth;
DWORD ImgHeight;
DWORD palettesize;
DWORD datasize;
然后在视类的ONDRAW函数中处理显示DIB的东西,我想你这个应该是会的!!
2、你应该是使用VFW编程,应该知道回调函数的用法吧??
3、另外,我想问你一个问题,你用什么采集卡?什么摄像头??有没有出现过在建立视频窗与设备相连时发现设备正在被其他视频使用而无法使用该设备的问题,你能给点建议吗?期待着你的答复,如果你想进一步探讨,请和我联系。
Email:old-j@163.net,qq:17096205
VB如何实现摄像头
数据
的捕获与
显示
http://www.mysticboy.nease.net/downdload/document/New_Folder/vbVidCap.rar或如下:Public Const WM_USER = &H400Type POINTAPI x As Long y As LongEnd TypeDeclare Function SendMessage Lib "user32
Window 下 VFW 视频采集与
显示
引言 经过几天的努力终于将VFW视频采集与
显示
功能完整实现了,不得不说网上对这方面完整的详细讲解文章是在太少了。所以就要本人来好好总结一下让后来者不再像我一样折腾好久。在本文
中
我将详细讲解VFW视频采集过程的实现,以及采集后视频的
显示
方法。 VFW简介 虽然这是篇技术博文,但是我觉得用一个东西,那么关于它的概述还是不能少,所以特从百度上copy了下VFW的概念描述,...
c# 获取 摄像头 实现录像
c# 获取 摄像头 实现录像 利用普通的简易摄像头,通过C#语言即可开发成简易视频程序。本实例利用市场上购买的普通摄像头,利用VFW技术,实现单路视频监控系统。运行程序,窗体
中
将
显示
舰体摄像头采集的视频信息。如图13.9所示。技术要点本实例主要使用了VFW(
Video
for Windows)技术。VFW 是Microsoft公司为开发Windows平台下的视频应用程序提供的软件工具包...
基于VFW视频采集及
数据
处理
基于VFW视频采集及
数据
处理 准备工作:建立基于对话框的程序,并添加控件及需要的成员变量; 1. 采用capCreateCaptureWindow函数创建视频采集窗口 m_CapWnd =capCreateCaptureWindow(_T("My
Video
Capture"), WS_CHILD | WS_VISIBLE,0, 0, LocalRect.Width(),LocalR
VFW
VFW概念 VFW是微软公司1992年推出的关于数字视频的一个软件包,它能使应用程序通过数字化设备从传统的模拟视频源得到数字化的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频
数据
量大的问题,需要对
数据
进行压缩。它引进了一种叫AVI的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上,以及在AVI文件
中
交替存储视频帧和与之相匹配的音频数
机器视觉
4,446
社区成员
15,335
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章