2016-11-11 8 views
0

Я вроде как собираю проект, где кто-то еще оставил много лет назад здесь. Я использую Visual Studio 2012, а приложение - формы выигрышей, написанные на VB. У меня есть окно, в котором отображаются данные моей веб-камеры и снимки, но мне нужно добавить возможность масштабирования (в цифровом виде, поскольку веб-камера не имеет оптического увеличения.)Могу ли я увеличить масштаб изображения веб-камеры в VB?

В настоящее время проект использует DirectShowLib. Элемент управления формы, отображающий видео, - это пользовательский элемент управления (известный бог знает, как давно), который реализует ISampleGrabberCb, но я честно знаю почти ничего о файле/v, и для этого проекта требуется обновление STAT.

ответ

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, чтобы я отвечал за его жизненный цикл.

GDI довольно медленный, хотя. Теперь я использую OpenTK для обработки этого в моих приложениях.

+0

Спасибо, сэр! Работали как шарм –