为什么这在PictureBox中没有显示任何结果?

时间:2011-09-11 17:12:08

标签: vb.net picturebox threshold

我正在尝试将图像更改为可变阈值上的黑白图像,以便在ocr程序中使用。我的问题是我没有在图像中看到任何被处理的结果。我在渲染时遇到了一些小的等待,所以我假设它实际上正在做某事。

Imports System.Object
Imports System.Drawing.Bitmap

Public Class Form1
    Dim x As Integer, y As Integer
    Dim imgx As Integer, imgy As Integer
    Dim img As Bitmap
    Dim thresh As Bitmap
    Dim pixelColor As Color
    Dim threshcolor As Color
    Dim tempcolor As Color

    Public Function getpixel(ByRef x As Integer, ByRef y As Integer) As Color

    End Function

    Public Sub find_img_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles find_img.Click
        open_img.ShowDialog()
        img_dsp.Text = open_img.FileName()
        img_loc.Text = open_img.FileName
        img_dsp.ImageLocation = img_dsp.Text
    End Sub

    Public Sub find_img_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles find_img.LostFocus
        img = (img_dsp.Image)
        img_dsp.Refresh()
        img_dsp.Text = open_img.FileName()
        img_dsp.ImageLocation = img_dsp.Text
        img = (img_dsp.Image)
        img_dsp.Refresh()
    End Sub

    Public Sub render_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles render.Click
        Dim myx As Integer
        Dim myy As Integer

        img_threshold.Image = img
        thresh = img_threshold.Image

        For myy = 1 To (img.Height - 1)
            For myx = 1 To (img.Width - 1)
                tempcolor = img.GetPixel(myx, myy)

                If tempcolor.GetBrightness < NumericUpDown1.Value Then
                    thresh.SetPixel(x, y, Color.Black)
                End If

                If tempcolor.GetBrightness > NumericUpDown1.Value Then
                    thresh.SetPixel(x, y, Color.White)
                End If
            Next myx
        Next myy

        img_threshold.Image = thresh
        img_threshold.Refresh()
    End Sub
End Class    

1 个答案:

答案 0 :(得分:0)

你知道参考是什么吗?写A = B,改A,写B = A? 如果你指定A和B指向同一个对象(对同一个对象的引用),那么改变另一个也会改变另一个对象,它们会在内存中占用相同的存储空间!请在编写程序之前先自学。