我有点像几年前在其他人离开的地方选择一个项目。我使用的是Visual Studio 2012,该应用程序是一个用VB编写的win表单。我有一个窗口显示我的网络摄像头的进纸和快照图片,但我需要添加缩放功能(数码,因为网络摄像头没有光学变焦。)
目前,该项目使用DirectShowLib。显示视频的表单上的控件是实现ISampleGrabberCb的用户控件(书面上帝知道多久以前),但老实说我几乎不了解a / v的东西,而且这个项目需要更新STAT。
答案 0 :(得分:0)
是的,这是可能的。
您的网络摄像头只会生成位图帧。然后,您可以将它们绘制到您喜欢的任何表面上。最简单的方法是使用gdi函数。
以下是它应该是什么样子的简要概述
Dim mBitmap As Bitmap
Dim mZoomRect As Rectangle = New Rectangle(100, 100, 100, 100)
Public Sub OnFrameReceived(frame As Bitmap)
mBitmap = CType(frame, Bitmap)
'Tell the form to redraw itself.
Me.Invalidate()
End Sub
Private Sub MyPaintHandler(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.DrawImage(mBitmap, Me.ClientRectangle, mZoomRect, GraphicsUnit.Pixel)
End Sub
您必须对同步有点小心,因为您的帧在不同时间到达您正在绘制的图像。而且您还需要注意何时处理位图。当我这样做时,我在OnFrameReceived
处理程序中克隆位图,以便我负责其生命周期。