Vb.net 将图像从picturebox以另一种形式移动到另一个picturebox

Vb.net 将图像从picturebox以另一种形式移动到另一个picturebox,vb.net,Vb.net,我正在尝试将一个图像从一个图片盒移动到另一个图片盒,该图像以另一个表单被网络摄像头捕获,但我的代码不起作用 Public Class Form12 Private _capture As Emgu.CV.Capture Private _captureInProgress As Boolean Dim form23 As Form23 Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.Event

我正在尝试将一个图像从一个
图片盒
移动到另一个
图片盒
,该图像以另一个
表单
被网络摄像头捕获,但我的代码不起作用

Public Class Form12
Private _capture As Emgu.CV.Capture
Private _captureInProgress As Boolean
Dim form23 As Form23

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    form23.SetPictureBoxImage(captureImageBox.Image)
    form23.Show()
End Sub

Private Sub captureButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles captureButton.Click
        If (_capture Is Nothing) Then
            Try
                _capture = New Emgu.CV.Capture
            Catch excpt As NullReferenceException
                MessageBox.Show(excpt.Message)
            End Try
        End If
        If (Not _capture Is Nothing) Then
            If _captureInProgress Then
                Me.captureButton.Text = "Start Capture"
                RemoveHandler Application.Idle, New EventHandler(AddressOf Me.ProcessFrame)

            Else
                captureButton.Text = "Capture"
                AddHandler Application.Idle, New EventHandler(AddressOf Me.ProcessFrame)
            End If
            _captureInProgress = Not _captureInProgress
        End If
End Sub

Private Sub ProcessFrame(ByVal sender As Object, ByVal arg As EventArgs)

    Dim frame As Emgu.CV.Image(Of Emgu.CV.Structure.Bgr, Byte) = Me._capture.QueryFrame
    Dim grayFrame As Emgu.CV.Image(Of Emgu.CV.Structure.Gray, Byte) = frame.Convert(Of Emgu.CV.Structure.Gray, Byte)()
    Dim smoothedGrayFrame As Emgu.CV.Image(Of Emgu.CV.Structure.Gray, Byte) = grayFrame.PyrDown.PyrUp

    captureImageBox.Image = frame.Bitmap
End Sub

Private Sub ReleaseData()
    If (Not _capture Is Nothing) Then
        _capture.Dispose()
    End If
End Sub
中二

Public Class Form23
Public Sub SetPictureBoxImage(ByVal image As Bitmap)
    PictureBox1.Image = image
End Sub
End Class

所有的网络摄像头都工作正常,只是图像传输不正常。对不起,我只是个新手。刚从一个教程中得到这个代码。谢谢

表单是类-在所有表单的顶部都有这样的说明:

Public Class Form817
因此,应该创建它们的一个实例,这就是您的代码应该在任何地方使用的内容:

Dim myFrm As Form817            ' DECLARES the variable
myFrm = New Form817             ' Initialize myFrm as an instance of Form817

' short method:
Dim myFrm As New Form817
问题在于:

form23.SetPictureBoxImage(captureImageBox.Image)
form23.Show()
VB不区分大小写,并且您的代码没有创建和创建实例,因此第一行引用的是类,而不是实例。当您通常执行类似于
Form23.Show
-而不创建实例时,VB会使用相同的名称为您创建一个实例。这称为默认表单实例,应该避免(始终)


您的图像传输失败,因为代码引用了一个对象(Form23),但显示了另一个对象(Form23的新实例)。

对于开始,我看不到Form23的实例在哪里;此外,VB不区分大小写,因此
将form23作为form23进行调整不是一个好主意。如果您不能提供描述性名称,请使用frm23。按原样,看起来您正在设置类而不是表单属性。将其更改为
Dim frm23作为新表单23
,并修复对
frm23
的引用,它应该可以工作。它仍然没有复制/传输到另一个
PictureBox1
我的代码还有什么问题吗?哼!就这么简单,你又救了我的未来!:)谢谢你,先生!:)哦,就是这样,我也在ASP.NET中使用这些东西吗?谢谢!