vb.net - VB.Net 上的 Emgu.CV 慢速图片框图像
问题描述
使用 Emgu.CV 版本 2.2.1.1150
我正在尝试查询帧并在图片框中显示,并且代码在具有 Microsoft LifeCam 720p 的台式计算机上运行良好 Picturebox 流畅而流畅,但是当我在 Windows 10 平板电脑(CHUWI HI10X)中尝试该程序时,图像滞后。
如果我在 Win10 相机应用程序中测试平板电脑相机,它们运行良好,视频高清流畅。
我更新了这些相机的驱动程序以检查是否是这样,但没有运气。
Public Class frmCamera
Dim imgFrame As Image(Of Bgr, Byte)
Dim vidCapture As Capture
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
vidCapture = New Capture(1)
vidCapture.QueryFrame()
AddHandler Application.Idle, AddressOf AppIdle
End Sub
Public Sub AppIdle(ByVal sender As System.Object, ByVal e As System.EventArgs)
imgFrame = vidCapture.QueryFrame().Resize(800, 600, Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR)
PictureBox1.Image = imgFrame.ToBitmap()
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
frmMain.Show()
RemoveHandler Application.Idle, AddressOf AppIdle
vidCapture.Dispose()
Me.Close()
End Sub
结束类
我尝试了多种帧大小和不同的插值类型,但没有成功。也从使用 imageBoxFrameGrabber 更改为将 PictureBox 转换为位图,但结果仍然相同。也尝试使用计时器,但看起来更糟。
谢谢!
编辑:
使用计时器我的代码最终没有运气。
Public Class frmCamera
Dim imgFrame As Image(Of Bgr, Byte)
Dim vidCapture As Capture
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = Timer1.Interval
RichTextBox1.Text = "Interval:" + Convert.ToString(Timer1.Interval)
Timer1.Start()
vidCapture = New Capture(1)
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
frmMain.Show()
vidCapture.Dispose()
Me.Close()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
imgFrame = vidCapture.QueryFrame().Resize(800, 600, Emgu.CV.CvEnum.INTER.CV_INTER_LINEAR)
' PictureBox1.Image.Dispose()
PictureBox1.Image = imgFrame.ToBitmap()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Timer1.Stop()
Timer1.Interval = Timer1.Interval + 2
RichTextBox1.Text = "Interval:" + Convert.ToString(Timer1.Interval)
Timer1.Start()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Timer1.Stop()
Timer1.Interval = Timer1.Interval - 2
RichTextBox1.Text = "Interval:" + Convert.ToString(Timer1.Interval)
Timer1.Start()
End Sub
结束类
尝试按照建议将图像放置在图片框中,最终得到:
System.NullReferenceException:“对象引用未设置为对象的实例。”
在处置的那一刻。
再次感谢吉米!
解决方案
推荐阅读
- android - 在帐户管理器中添加一个帐户
- php - 将 .txt 解析为 csv 并在 php 中插入数据库
- javascript - 为 FlatList 创建“删除项目”功能
- c++ - 如何在 DirectX 和 OpenGL 应用程序上覆盖 Chromium/Electron 浏览器主机?
- ruby-on-rails - Rails 5.1.4 fields_for 用于多个对象
- javascript - 使用javascript将图像添加到.ics文件?
- ios - Swift - 在视图控制器中使用两个单独的按钮添加文本字段和 UIImageView
- php - 如何用php替换字符串并上传
- sql-server - FULL OUTER JOIN 从外键表返回 NULL 值
- android - 自动 RecyclerView 滚动