如何在Vb中直接进行图象捕获及保存

urus 2000-03-16 12:35:00
最近用VB做一个图象处理程序,需要进行图象捕获,我现在的方法是用vc给做一个控件然后在vb中调用,但不知如何在Vb中直接进行图象捕获,望各位指教,另外,当用picturebox作为MCI控件的输出设备时,如何将图片框中的图象保存下来,因为这时尽管picturebox 中有图但image是空的
...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-03-16
  • 打赏
  • 举报
回复
既然VC的控件都已经做出来了,为什么VB不行呢?
TBBT 2000-03-16
  • 打赏
  • 举报
回复
用BITBLT,GETPIXEL等
我有源程序,tbbt@citiz.net
Janven 2000-03-16
  • 打赏
  • 举报
回复
通过绘图API函数BitBlt,StretchBlt,VB能够实现很强大的图形功能。vb很多控件都提供了hDC属性,也就是图形的句柄,通过API能够实现很多效果相当不错的图形处理。找的这方面的书看看吧。你说的图形捕获是指抓图还是硬件捕获?
david 2000-03-16
  • 打赏
  • 举报
回复
autoredraw等于TRUE时,image才有数据.
TVideoGrabber_9.1.1.2官方demo,使用我资源的lincese可以直接使用,用于图像解码功能强大,可支持各种摄像头和图像格式 TVideoGrabber是一个用于C#.NET,VB.NET,C ++,Delphi,C ++ Builder和ActiveX兼容应用程序开发的视频捕捉/媒体播放器SDK。 TVideoGrabber功能强大且直观,将帮助您节省时间,金钱和精力,将视频和/或音频功能纳入您的项目。 TVideoGrabber可捕获和记录来自大多数视频捕捉设备(如USB网络摄像头,USB模拟捕捉设备,IP摄像头,桌面以及用作视频源的一组位图)的视频和音频流。 通过安装我们的可选RTSP DirectShow源过滤器,您可以捕获RTSP,RTMP,HTTP,Shoucast和其他各种流源。 RTSP过滤器可让您将流媒体源保存到文件而无需转码,并且在运行生成新文件时不会丢失帧。 TvideoGrabber还支持采用罗技C920(H264),Blackmagic Decklink,Hauppauge Colossus等硬件编码器捕捉设备。 大多数编码格式都是本地支持的,或者使用第三方编解码器。 您可以将音频/视频直接或通过Windows Media服务器流式传输到网络。 TVideoGrabber也是一个先进的媒体播放器,可以播放正常速度的音频/视频剪辑,更快,更慢,前进和后退,逐个或通过播放列表。 可以捕获帧,在预览,录制或播放过程执行文本/图形叠加,从另一TVideoGrabber组件执行PIP视频,应用视频处理(如旋转,裁剪等)。 TVideoGrabber可以将多个剪辑合并为一个剪辑,将剪辑分割成更小的剪辑,并将其重新编码为不同的格式。 TVideoGrabber包含以下功能的单个组件: - 视频预览 - 视频录制, - 声音录制, - 媒体播放器, - 合并/分割视频和音频CLIPS, - 帧捕获, - 图形和文本覆盖, - 来自另一个TVIDEOGRABBER的PIP视频(画画) - IP CAMERA SUPPORT, - 运动检测, - 实时网络音频/视频流媒体, - 视频处理, - 屏幕(或窗口)录制, - 视频剪辑从图像建立, - 重新编码为其他格式, - ZOOM / CROP, - 音频VU米, - 双显示,
可用来在VB,VC驱动摄像头,进行静帧捕捉的DLL动态链接库(必须要有摄像头生成StillCap0000.bmp):将MyDll文件解压后把MyDll.dll与MyDll.lib一起拷入工程DEBUG目录(为保险起见DEBUG的外层目录也拷贝一份吧),另有一个VC++6的测试工程test_Dll,已经考入相应DLL和LIB文件,可直接编译运行,VB只拷贝MyDll.dll与MyDll.lib VB2008 调用方法,在公共模块声名: Public Declare Function CreateWnd Lib "MyDll" () As Double Public Declare Function ClearGraphs Lib "MyDll" () As Double Public Declare Function OnpStillCapture Lib "MyDll" (ByVal hwnd As Long) As Double Public Declare Function InitStillGraph Lib "MyDll" (ByVal hwnd As Long) As Double Public Declare Function CloseWnd Lib "MyDll" () As Double 在窗体上放置2个PictureBox控件,名字为:pic1,pic2 放置三个按键:名字为Btn1,Btn2,Btn3 Btn1为打开视频,调用代码: Private Sub Btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn1.Click InitStillGraph(pic1.Handle) '打开摄像头预览视频 end sub Btn2为截取视频保存为BMP,文件保存在应用程序路径下,调用代码: Private Sub Btn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn2.Click OnpStillCapture(pic2.Handle) '截取预览视频一帧图像 end sub Btn3为截取视频保存为清除内存,调用代码: Private Sub Btn3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn3.Click ClearGraphs() '退出前,完成内存清扫工 end sub VC调用方法: 在对话框上放置两个图像框,类型为位图,三个按键B1,B2,B3 定义全局函数引用: typedef HWND(* CreateWnd)(void);// typedef HRESULT(* InitStillGraph)(HWND hwnd); typedef void (* OnpStillCapture)(HWND hwnd); typedef int (* ClearGraphs)(); HINSTANCE glibsample; //如果定义成HANDLE类型,则出错 CreateWnd createwnd; InitStillGraph initStillGraph;//定义引用函数 OnpStillCapture onpStillCapture;//定义引用函数 ClearGraphs clearGraphs;//定义引用函数 用类向导为两个位图框建立控件(类型为Contorl)变量,m_p1,m_2 : 在窗口OnInitDialog()函数调整图像框大小: // TODO: Add your specialized code here and/or call the base class m_p1.MoveWindow(0,0,200,200,true); m_p2.MoveWindow(210,0,200,200,true); glibsample=LoadLibrary("MyDll.dll"); //加载dll 在B1消息函数: void 你的类::OnB1() { initStillGraph=(InitStillGraph)GetProcAddress(glibsample,"InitStillGraph"); (*initStillGraph)(m_p1.m_hWnd);//预览图像 } 在B2消息函数: void 你的类::O

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧