S szchengyu Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #1 VFW中有 capSetCallBackOnFrame 中如何取得视频数据, 如果看成 BITMAP,那么这个BITMAP没文件头,怎么处理呢 困惑呀。。。。。。。分少也没办法
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #2 你先用CapCreateCaptureWindowA()获得视频接口,然后用CapSetCallBackOnFrame()即可取得视频数据。 如: Dim CAP_PARAMS As CAPTUREPARMS lwndC = capCreateCaptureWindowA("My Capture Window", WS_CHILD Or WS_VISIBLE, 0, 0, 160, 120, Me.hwnd, 0) capCaptureGetSetup lwndC, VarPtr(CAP_PARAMS), Len(CAP_PARAMS)
你先用CapCreateCaptureWindowA()获得视频接口,然后用CapSetCallBackOnFrame()即可取得视频数据。 如: Dim CAP_PARAMS As CAPTUREPARMS lwndC = capCreateCaptureWindowA("My Capture Window", WS_CHILD Or WS_VISIBLE, 0, 0, 160, 120, Me.hwnd, 0) capCaptureGetSetup lwndC, VarPtr(CAP_PARAMS), Len(CAP_PARAMS)
U un1 Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #3 [8D]开始前使用 capGetVideoFormat 获得。 http://www.banasoft.com/AVPhone.htm
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #4 Delphi Example: http://www.computerworld.com.cn/htm/app/aprog/01_2_5_5.asp
S szchengyu Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #5 YB_unique: 那文章我看过了,我可以得到PVIDEOHDR中的数据, 但恕我愚笨,我仍不知道如何处理DataPoint中的数据, 能否像TBitmap.Scanline一样用指针取里面的数据? 困惑。。。。。分少也没办法.
YB_unique: 那文章我看过了,我可以得到PVIDEOHDR中的数据, 但恕我愚笨,我仍不知道如何处理DataPoint中的数据, 能否像TBitmap.Scanline一样用指针取里面的数据? 困惑。。。。。分少也没办法.
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #6 var DataPoint:^byte; lpVHdr:LongInt DibLen:integer; VideoStr:=LPVIDEOHDR(lpVHdr); DibLen:=VideoStr^.dwBufferLength; GetMem(DataPoint,64000); CopyMemory(DataPoint,VideoStr^.lpData,Diblen); 下接你的处理代码
var DataPoint:^byte; lpVHdr:LongInt DibLen:integer; VideoStr:=LPVIDEOHDR(lpVHdr); DibLen:=VideoStr^.dwBufferLength; GetMem(DataPoint,64000); CopyMemory(DataPoint,VideoStr^.lpData,Diblen); 下接你的处理代码
S szchengyu Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #7 实在不好意思,我已经到了这一步,但我不知道拿DataPoint中的数据怎么办? 如何才能像对TBITMAP操作一样,操作里面的数据? 比如我要对这幅图像进行平滑,变形处理
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #8 你既然CopyMemory了,可以将Memory里的数据用stream读取出来,保存为文件再处理啊!
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #10 所捕获视频流生成的是AVI文件,用TBITMAP处理当然出错!
S szchengyu Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #11 这样呀?! 可我看过它的大小,与相同尺寸的BMP的尺寸小54个字节。 我要实现对图像的处理,应该怎么办呢?
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #12 先获得AVI文件,然后对你需要的帧处理即可!
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #14 你应该获得了AVI文件,对吗? 然后GetAviFrame可以获得AVI的指定帧,处理即可! 迷惑在哪?
Y YB_unique Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #16 呵呵!没关系!有问题再一起讨论! 其实如果是为了获取视频流,可以用封装好的控件,岂不更方便? www.torry.net 有很多这种的!
S szchengyu Unregistered / Unconfirmed GUEST, unregistred user! 2001-12-08 #17 GetAviFrame是什么呀? 我不喜欢别人给我源码,但这一次。。。。。。。。。。。。 另:我有个TVideoCap,它的 OnFrameCallback一样要自己处理PVIDEOHDR参数 还有,我的程序里要求对每一帧的处理不得超过60ms,这个控件好像很慢
GetAviFrame是什么呀? 我不喜欢别人给我源码,但这一次。。。。。。。。。。。。 另:我有个TVideoCap,它的 OnFrameCallback一样要自己处理PVIDEOHDR参数 还有,我的程序里要求对每一帧的处理不得超过60ms,这个控件好像很慢