Hallo,
ich hab' mir jetzt eine WebCam zugelegt. Zur Zeit versuche ich mich darin, die Bilder mit einem VB-Programm einzulesen. Als Vorlage habe ich leider nur ein Programm in C++, das aber ekelhaft viele API-Funktionen über DirectX aufruft. Hat jemand eine Idee, wie es einfacher geht?
Hier der VB-Code (Auszüge) zur ermittlung der Schwerpunkt-Koordinaten:
Code:
....
bmpOrig ist eine Bitmap und enhält das Bild.
Dim mXRed As Integer, cXRed As Integer
Dim mYRed As Double, cYRed As Integer
Dim mXGreen As Integer, cXGreen As Integer
Dim mYGreen As Double, cYGreen As Integer
Dim x, y As Integer
Dim c As Color
Dim Hue As Integer
Dim Saturation As Integer
Dim Brightness As Integer
For y = 0 To bmpOrig.Height - 1
For x = 0 To bmpOrig.Width - 1
c = bmpOrig.GetPixel(x, y)
Hue = CInt(c.GetHue())
Saturation = CInt(c.GetSaturation() * 100)
Brightness = CInt(c.GetBrightness() * 100)
If (Hue > 355 Or Hue < 5) And (Saturation > 70) And Brightness > 35 Then
'roter Punkt, Farbwert (Hue) zwischen 355 .. 360 / 0 .. 5
mXRed += x 'Summe der x-Koordinaten mit roten Pixel
mYRed += y
cXRed += 1 'Anzahl der x-Koordinaten mit rotem Pixel
cYRed += 1
ElseIf (Hue > 105 Or Hue < 120) And (Saturation > 70) And Brightness > 35 Then
'grüner Punkt, Hue zwischen 105 .. 120
mXGreen += x
mYGreen += y
cXGreen += 1
cYGreen += 1
Else
'irgendeine andere Farbe
End If
Next
Next
mXRed = CInt(mXRed / cXRed) 'Mittelwert der x-Koordinaten mit rotem Pixel = x-Koordinate des Schwerpunkts
mYRed = CInt(mYRed / cYRed)
mXGreen = CInt(mXGreen / cXGreen)
mYGreen = CInt(mYGreen / cYGreen)
@storchi: Ich habe die ersten Experimente mit SCILAB gemacht. Damit kann man sicher gut Versuche anstellen. Vielen Dank noch einmal für den Hinweis auf das Tutorial.
Gruß Red Baron
Lesezeichen