有时你的代码需要非托管的资源,如文件句柄、 COM 包装器或 SQL 连接。 一个Using块确保一个或多个此类资源的释放你的代码完成与之时。 这使它们可用于其他代码使用。
托管的资源释放由.NET Framework 垃圾回收器 (GC) 而无需您采取任何额外的编码。 不需要Using托管资源的块。 但是,仍可以使用Using块以强制释放托管资源而不是等待垃圾回收器。
一个Using块都有三个部分: 获取、 使用情况和可供使用。
获取意味着创建变量并将其初始化,以便向系统资源,请参阅。 Using语句可以获取一个或多个资源,也可以在进入块之前获取恰好一个资源,其提供给Using语句。 如果你提供resourceexpression,必须在将控制权传递给之前获取资源Using语句。
使用情况意味着访问资源并使用它们执行操作。 之间的语句Using和End Using表示资源的使用。
处置方法调用Dispose方法中的对象上resourcename。 这允许要明确终止其资源的对象。 End Using语句释放的资源下Using块的控件。
首先安装
PM>Install-Package OpenCvSharp4.Windows -Version 4.0.1.20190326
然后,写个简单例子Canny边缘检测
Imports OpenCvSharp
Public Class Form1
Private Sub Start(ByVal fileName As String)
Using imgSrc As New Mat(fileName, ImreadModes.Color),
imgGray As New Mat(imgSrc.Size, MatType.CV_8UC1),
imgDst As Mat = imgSrc.Clone()
Cv2.CvtColor(imgSrc, imgGray, ColorConversionCodes.BGR2GRAY, 0)
Dim keypoints() = Cv2.FAST(imgGray, 50, True)
For Each kp As KeyPoint In keypoints
imgDst.Circle(kp.Pt, 3, Scalar.Red, -1, LineTypes.AntiAlias, 0)
Next kp
Cv2.ImShow("FAST", imgDst)
Cv2.WaitKey(0)
Cv2.DestroyAllWindows()
End Using
End Sub
Private Sub showPict(ByVal fileName As String)
' Dim src As Mat = New Mat(fileName, ImreadModes.Grayscale)
Dim src As Mat = Cv2.ImRead(fileName, ImreadModes.Grayscale)
Dim dst As Mat = New Mat()
Cv2.Canny(src, dst, 50, 200)
Using (New Window("src image", src))
Using (New Window("dst image", dst))
Cv2.WaitKey()
End Using
End Using
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
OpenFileDialog1.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG"
Dim fResult = OpenFileDialog1.ShowDialog() '打开文件选择框
If fResult = DialogResult.OK Then
Dim fileName As String = OpenFileDialog1.FileName '得到选择的文件
showPict(fileName)
End If
End Sub
End Class