Liste der Anhänge anzeigen (Anzahl: 1)
Problem bei RGB zu HSV-Wandlung
Huhu!
So bin neu hier aber hab schon einen Haufen durch und mitgelesen =)
Ich habe auch vor mir in nächster Zeit einen Robi zu bauen, ein Spaßprojekt, einen interagierenden Roboter. Bevor ich damit anfang wollte ich mir erstmal softwaremäßig einen Überblick machen, was für Möglichkeiten des "Inputs" es gibt.
Ich habe mit dem Bildverarbeitungstut. angefangen, läuft eigentlich auch alles soweit recht gut bis jetz, ich hab nur ein Problem mit den Webcams (ich denke es liegt an denen)
Wenn ich von RGB nach HSV umwandle und mir das "H"-Bild anguck dann seh ich immer Klötzchen (s. Bild). Habs mit ner andern Cam getestet, die hat gegrieselt, da wars ein reines Chaos und man hat gar keine Objekte erkannt. Liegt das an der Komprimierung der Kamera? Oder ist es ein Fehler im Code (das Bspbild vom Tut wandelt er aber genauso um). Gibt es Webcams mit denen ihr gute Erfahrung habt? Denn Objekterkennung wird schwierig wenn man Legosteine im Bild hat ;)
Grüße,
Tim
Liste der Anhänge anzeigen (Anzahl: 3)
Doch zoom mal ran, das sind die typischen Kompressionsklötzchen, oder?
Als Algorythmus hab ich den von hier (is in VB geschrieben):
http://www.aboutvb.de/khw/artikel/khwrgbhlshsv.htm
Und schau mal, wenn ichs mit nem richtigen Foto mache dann geht's auch besser:
EDIT:
2. Anhang, ich hab das mal vergrößter und dunkler gemacht, das liegt doch schon dadran oder?
Liste der Anhänge anzeigen (Anzahl: 1)
Hey!
Wie gesagt ich dachte an einen "humanoiden" Roboter, der z.B. Gesichter erkennen kann und Menschen. Aber auch einfache Gegenstände.
Ist das für privat überhaupt realisierbar? Denn man hat ja nicht immer einfache Hintergründe in ner Wohnung, eher das Gegenteil davon...
Würdet ihr für Menschen lieber eine Infrarotkamera nehmen? Ist ja doch deutlich einfacher oder?
Grüße
EDIT:
Ich hab das grad mal mit deinem Testbild getestet...ich glaub da stimmt wohl doch irgendwas nicht, schauts euch mal im Anhang an.
Code:
Public Sub RGBColorToHSV(ByVal Color As Long, rH As Integer, _
rS As Integer, rV As Integer, rBack As Integer, gBack As Integer, bBack As Integer)
OleTranslateColor Color, 0&, Color
nR = Color Mod 256
rBack = nR
Color = Color \ 256
nG = Color Mod 256
gBack = nG
Color = Color \ 256
nB = Color Mod 256
bBack = nB
RGBtoHSV nR, nG, nB, rH, rS, rV
End Sub
Public Sub RGBtoHSV(ByVal R As Integer, ByVal g As Integer, _
ByVal b As Integer, rH As Integer, rS As Integer, rV As Integer)
On Error Resume Next
nRR = R / 255
nGG = g / 255
nBB = b / 255
nRGBs(0) = nRR
nRGBs(1) = nGG
nRGBs(2) = nBB
nMax = zMax(nRGBs)
nMin = zMin(nRGBs)
nV = nMax
If nMax <> 0 Then
nS = (nMax - nMin) / nMax
End If
If nS = 0 Then
nH = -1
Else
nDelta = nMax - nMin
Select Case nMax
Case nRR
nH = (nGG - nBB) / nDelta
Case nGG
nH = 2 + ((nBB - nRR) / nDelta)
Case Else
nH = 4 + ((nRR - nGG) / nDelta)
End Select
nH = nH * 60
If nH < 0 Then
nH = nH + 360
End If
End If
rH = nH
rS = nS * 100
rV = nV * 100
End Sub
Und das ist der Code für die Umwandlung, copy&paste deswegen sollte das ja eigentlich gehn oder? Was auf dem Bild ist ist der "H-Kanal".
Oder liegt das wieder nur daran dass das n JPG ist? Hast du das mal probiert, deinen Screenshot umzuwandeln?