我可以数码缩放我的网络摄像头饲料在VB



我是在做别人几年前放弃的项目。我使用的是Visual Studio 2012,应用程序是一个用VB编写的win forms。我有一个窗口显示我的网络摄像头的饲料和抓拍照片,但我需要添加缩放功能(数字,因为网络摄像头没有光学变焦)

目前,该项目使用DirectShowLib。显示视频的窗体上的控件是一个实现ISampleGrabberCb的用户控件(天知道是多久以前写的),但老实说,我对a/v的东西一无所知,这个项目需要更新STAT.

这是可能的。

你的网络摄像头将只是产生位图帧。然后你可以把它们画在任何你喜欢的表面上。最简单的方法是使用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处理程序中的位图,以便我负责其生命周期。

GDI相当慢。我现在在我的应用程序中使用OpenTK来处理这个

最新更新