2016-08-19 26 views
0

保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示す を示します。AccessViolationExceptionが未処理[VB.Net] [Emgucv]

これは、画像をmy PictureBoxに設定した後のエラーです。その正常に動作しますが、後でエラーがポップアウトします。

ここに私のコードです。

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    Try 
     Dim cap As New Capture() 'first line 

     PictureBox1.Image = cap.QueryFrame.ToBitmap 'this line AccessViolationException 
    Catch ex As Exception 
     Timer1.Stop() 
     MsgBox("CAMERA ERROR " & ex.Message) 
    End Try 
End Sub 

Private Sub MetroTile1_Click(sender As Object, e As EventArgs) Handles MetroTile1.Click 
     Try 
      Dim cap As New Capture() 'first line 
      Select Case MetroTile1.Text 
       Case "Capture" 
        Timer1.Start() 
        MetroTile1.Text = "OK" 
       Case "OK" 
        Timer1.Stop() 
        frmStudentAddEdit.picImage.Image = PictureBox1.Image 
        MetroTile1.Text = "Capture" 
        Me.Close() 
      End Select 
     Catch ex As Exception 
      Timer1.Stop() 
     End Try 
    End Sub 

cap.QueryFrame.ToBitmapAccessViolationExceptionがエラー未処理であったです。

これを修正するにはどうすればよいですか?このエラーの原因は何ですか?助けてください。

+0

を交換した後に処分される

  • (新しいたびに作成されていない)形のメンバーである私は前にこのライブラリを使用していませんでしたが、タイマーが刻々と変化するたびに新しいキャプチャを作成するのは驚きです。例を参考にして、これが正しいことを確認し、ビットマップの処理が完了したら、ビットマップを廃棄してください。 – FloatingKiwi

  • +0

    カムからイメージを取得したらビットマップをどのように処分できますか?申し訳ありませんまだvb.netにハードウェアで新しい。 – TKGhoul

    答えて

    0

    次のようなことを目指してください。

    1. キャプチャoldImageが

    Private mCapture As Capture 
    
    Private Sub Form12_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
        mCapture = New Capture() 
    End Sub 
    
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
        Try 
         Dim oldImage = PictureBox1.Image 
         Dim newFrame = mCapture.QueryFrame.ToBitmap 
         PictureBox1.Image = newFrame.ToBitmap 
         If oldImage IsNot Nothing Then oldImage.Dispose() 
        Catch ex As Exception 
         Timer1.Stop() 
         MsgBox("CAMERA ERROR " & ex.Message) 
        End Try 
    End Sub 
    
    Private Sub MetroTile1_Click(sender As Object, e As EventArgs) Handles MetroTile1.Click 
        Try 
         Select Case MetroTile1.Text 
          Case "Capture" 
           Timer1.Start() 
           MetroTile1.Text = "OK" 
          Case "OK" 
           Timer1.Stop() 
           frmStudentAddEdit.picImage.Image = PictureBox1.Image 
           MetroTile1.Text = "Capture" 
           Me.Close() 
         End Select 
        Catch ex As Exception 
         Timer1.Stop() 
        End Try 
    End Sub 
    
    +0

    これは私のケースでうまくいきます!ありがとうございます!!乾杯! – TKGhoul