vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Pixel von RGB in HSV Konvertieren und dann Bild neu zeichnen 
Autor: VB-Robo
Datum: 02.12.10 20:20

so hab das jetzt endlich geschafft. wenn auch über Umwege
nun hab ich aber das Problem, das es sehr lange dauert.
22sec
muss es in weniger als einer sec schaffen
wie könnt ich das verbessern?

hier mal mein kompletter Code vom Programm:
Public Class Form1
    Dim XButton As Integer
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
 
    End Sub
 
    Private Sub cmdCamStart_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles cmdCamStart.Click
        If XButton = 0 Then
            videoHandle = Camera_Deklaration.CreateCaptureWindow( _
              picturebox1.Handle) 'Cam starten und Bild in picturebox1 ausgeben
            cmdCamStart.Text = "Cam stoppen"
            XButton = 1
            cmdSave.Enabled = True
            cmdBildtoArray.Enabled = True
            cmdBildtoMatrix.Enabled = True
        Else
            Disconnect(videoHandle)
            cmdCamStart.Text = "Cam starten"
            XButton = 0
            cmdSave.Enabled = False
            cmdBildtoArray.Enabled = False
            cmdBildtoMatrix.Enabled = False
        End If
 
    End Sub
 
    Private Function vbPixels() As Object
        Throw New NotImplementedException
    End Function
 
    Private Sub cmdBildtoMatrix_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles cmdBildtoMatrix.Click
        Dim image1 As Bitmap        'Image eins als Variable vom Typ Bild 
        ' erzeugen
        Dim matrix(320, 240, 1, 1, 1) As Long
        Dim px, py, x, y, Max, Min, PR, PG, PB As Integer             _
          'Variablen für Koordinaten der Pixel definieren
        Dim bs As New BindingSource
        Dim mX, mY As Integer
        Dim StartZeit As Date
        Dim StopZeit As Date
 
        StartZeit = DateTime.Now
 
        image1 = CapturePicture(videoHandle) 'Aktuelles Bild der Kamera der 
        ' Variable image1 zuordnen
 
        'DataGridView mit Matrix Füllen
        DataGridView1.Columns.Add("X", "X")     'DataGridView Spalten erstellen
        DataGridView1.Columns.Add("Y", "Y")
        DataGridView1.Columns.Add("H", "H")
        DataGridView1.Columns.Add("S", "S")
        DataGridView1.Columns.Add("V", "V")
 
 
        For x = 0 To image1.Width - 1               'Schleife durch die Pixel
            For y = 0 To image1.Height - 1
                Dim pixelColor As Color = image1.GetPixel(x, y)
                ' Dim newColor As Color = Color.FromArgb(255, pixelColor.R, 
                ' pixelColor.G, 250)             'Farbe des Aktuellen Pixels _
                verändern pixelcolor.R = PixelFarbe Rot übernehmen
 
                PR = pixelColor.R       'RGB Werte den Variablen zuordnen
                PG = pixelColor.G
                PB = pixelColor.B
 
                If PR > PG And PR > PB Then     'Maximalwert von RGB 
                ' herausfinden und in Variable Max schreiben
                    Max = PR
                ElseIf PG > PR And PG > PB Then
                    Max = PG
                Else
                    Max = PB
                End If
                If PR < PG And PR < PB Then     'Minimalwert von RGB 
                ' herausfinden und in Variable Min schreiben
                    Min = PR
                ElseIf PG < PR And PG < PB Then
                    Min = PG
                Else
                    Min = PB
                End If
 
                If Max = Min Or PR = PG = PB Then       'H wert errechnen
                    h1 = 0
                Else
                    If Max = PR Then
                        h1 = 60 * (0 + (PG - PB) / (Max - Min))
                    ElseIf Max = PG Then
                        h1 = 60 * (2 + (PB - PR) / (Max - Min))
                    Else
                        h1 = 60 * (4 + (PR - PG) / (Max - Min))
                    End If
                End If
 
                If Max = 0 Or PR = PG = PB = 0 Then     'S Wert errechnen
                    s1 = 0
                Else
                    s1 = (Max - Min) / Max
                End If
 
                v1 = Max        'V Ist = dem Maximal wert
 
                matrix(x, y, 0, 0, 1) = h1      'HSV Werte in Matrix schreiben
                matrix(x, y, 0, 1, 1) = s1
                matrix(x, y, 1, 1, 1) = v1
                mX = x
                mY = y
                DataGridView1.Rows.Add(mX, mY, h1, s1, v1)  'Werte in 
                ' DataGridView einlesen
            Next
        Next
        StopZeit = DateTime.Now
        Label1.Text = CStr(DateDiff(DateInterval.Second, StartZeit, StopZeit)) _
          & " Sekunden"
 
    End Sub
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Pixel von RGB in HSV Konvertieren und dann Bild neu zeichnen3.021VB-Robo30.11.10 16:26
Re: Pixel von RGB in HSV Konvertieren und dann Bild neu zeic...1.764Rippler30.11.10 17:02
Re: Pixel von RGB in HSV Konvertieren und dann Bild neu zeic...1.630VB-Robo30.11.10 18:04
Re: Pixel von RGB in HSV Konvertieren und dann Bild neu zeic...1.665VB-Robo30.11.10 20:25
Re: Pixel von RGB in HSV Konvertieren und dann Bild neu zeic...2.058VB-Robo02.12.10 20:20

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel