【问题标题】:Code error for contour anlaysis in VB.netVB.net 中轮廓分析的代码错误
【发布时间】:2014-08-12 01:25:28
【问题描述】:

我正在尝试将 emgu.cv 库用于 vb.net 中的轮廓函数。问题是我的 var 没有定义。这应该在我已经导入的 lib emgu.cv 下。

Dim borderPen As New Pen(Color.FromArgb(150, 0, 255, 0))
Dim processor As ImageProcessor

Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs)
    Dim borderPen As New Pen(Color.FromArgb(150, 0, 255, 0))

    If RadioButton1.Checked = True Then
        For Each contour As var In processor.contours
            If contour.Total > 1 Then
                e.Graphics.DrawLines(Pens.Red, contour.ToArray())
            End If
        Next
    End If

    SyncLock processor.foundTemplates
        For Each found As FoundTemplateDesc In processor.foundTemplates
            If found.template.name.EndsWith(".png") OrElse    found.template.name.EndsWith(".jpg") Then
                DrawAugmentedReality(found, e.Graphics)
                Continue For
            End If
        Next
    End SyncLock
End Sub

Private Sub DrawAugmentedReality(found As FoundTemplateDesc, gr As Graphics)
    Dim fileName As String = "C:\Users\pnasguna\Desktop\A56.jpg"
    Dim AugmentedRealityImages As New Dictionary(Of String, Image)()
    Dim img As Image = AugmentedRealityImages(fileName)
    Dim p As Point = found.sample.contour.SourceBoundingRect.Center()
    Dim state = gr.Save()
    gr.TranslateTransform(p.X, p.Y)
    gr.RotateTransform(CSng(180.0F * found.angle / Math.PI))
    gr.ScaleTransform(CSng(found.scale), CSng(found.scale))
    gr.DrawImage(img, New Point(-img.Width / 2, -img.Height / 2))
    gr.Restore(state)
End Sub

我无法编译,因为未定义 var。如何解决这个问题?

【问题讨论】:

  • 抱歉我没有dll 来运行这个我会检查代码如果你参考链接下载dll
  • 我在复制 dll 的源代码文件中使用了这个 link

标签: vb.net emgucv


【解决方案1】:

您收到 Type <typename> is not defined 错误,因为类型 var 未定义。您可以通过执行以下步骤之一来解决此问题:

  • 删除 As var

For Each contour In processor.contours
  • var 替换为正确的数据类型。

For Each contour As <THE_CORRECT_TYPE> In processor.contours

Emgu

查看source codeemgu(用C#编写)ImageProcessor.cs文件将显示contours的数据类型:

public List<Contour<Point>> contours;

翻译成vb.net:

Public contours As List(Of Contour(Of Point))

解决方案

因此,有了这些信息,就很容易选择正确的数据类型。

For Each contour As Contour(Of Point) In Me.processor.contours

注意:您应该始终Option Strict 设置为On

【讨论】:

  • var 应该是 Emgu.CV.Contour 类中的成员,其中 T: struct T 是 System.Drawing.Point 但在我的编码中,它没有定义到此类中。我如何解决它。因为我已经导入了 Emgu.CV 库。
  • 你知道如何在 lib Emgu.CV.Contourwhere T: struct T 下定义 var。
  • @Saranya 这段代码是你自己写的还是翻译后的C#代码?看起来您的来源是this post。阅读:var (C# Reference)
  • 是的,我是从 C# 翻译过来的。我不知道通过 vb.net 使用 emgu.cv lib。我的来源来自here
  • 您的删除方法无效。我已经阅读了链接。问题是我的 var 没有声明为字符串或整数。 var 的定义应该显示 emgu.cv 库。希望你能得到这个。在过去的几周里,我一直被这个错误困扰。
猜你喜欢
  • 2020-01-09
  • 2018-01-28
  • 2022-01-24
  • 2014-09-29
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 2013-06-19
相关资源
最近更新 更多