Sonntag, Dezember 8, 2019

Umwandlung von Lab-Werten die RGB-Werte in opencv

Ich versuche zu konvertieren, die Lab-Werte werden die entsprechenden RGB-Werte.Ich will nicht konvertieren zu Lab-Bild RGB-Bild, aber einige Werte von L, a und b.Die Funktion cvCvtColor funktioniert nur für Bilder.Kann mir jemand sagen, wie dies zu tun.

Dank;

Code :

CvMat* rgb = cvCreateMat(centres->rows,centres->cols,centres->type);
cvCvtColor(centres,rgb,CV_Lab2BGR);
InformationsquelleAutor ATG | 2012-02-21

2 Kommentare

  1. 10

    Ich weiß nicht, wie es in OpenCV, aber wenn etwas ist, okay ich habe implementiert in C. Siehe Funktion color_Lab_to_LinearRGB und color_LinearRGB_to_RGB.

    Hier der code:

    double L, a, b;
    double X, Y, Z;
    double R, G, B;
    //Lab -> normalized XYZ (X,Y,Z are all in 0...1)
    Y = L * (1.0/116.0) + 16.0/116.0;
    X = a * (1.0/500.0) + Y;
    Z = b * (-1.0/200.0) + Y;
    X = X > 6.0/29.0 ? X * X * X : X * (108.0/841.0) - 432.0/24389.0;
    Y = L > 8.0 ? Y * Y * Y : L * (27.0/24389.0);
    Z = Z > 6.0/29.0 ? Z * Z * Z : Z * (108.0/841.0) - 432.0/24389.0;
    //normalized XYZ -> linear sRGB (in 0...1)
    R = X * (1219569.0/395920.0)     + Y * (-608687.0/395920.0)    + Z * (-107481.0/197960.0);
    G = X * (-80960619.0/87888100.0) + Y * (82435961.0/43944050.0) + Z * (3976797.0/87888100.0);
    B = X * (93813.0/1774030.0)      + Y * (-180961.0/887015.0)    + Z * (107481.0/93370.0);
    //linear sRGB -> gamma-compressed sRGB (in 0...1)
    R = R > 0.0031308 ? pow(R, 1.0 / 2.4) * 1.055 - 0.055 : R * 12.92;
    G = G > 0.0031308 ? pow(G, 1.0 / 2.4) * 1.055 - 0.055 : G * 12.92;
    B = B > 0.0031308 ? pow(B, 1.0 / 2.4) * 1.055 - 0.055 : B * 12.92;
    • Danke.Lassen Sie mich versuchen, diese.
    • Ich habe versucht, diese aber die Werte von RGB sind nicht in Reichweite..
    • RGB sind im Bereich 0…1. Ich denke, Sie wollte 0…255? Multiplizieren Sie einfach jede Komponente von 255.
  2. 0

    Ich denke der einzige Weg das zu tun, was Sie wollen, ist:

    • Blick auf die OpenCV source code oder Dokumentation für cvCvtColor und implementieren die Gleichungen selbst (Sie sind alle explizit gegeben auf dieser Seite)
    • erstellen Sie ein dummy-Bild mit dem paar-Lab-Werte, die Sie konvertieren möchten (sagen Sie 1 von n durch 3, wobei n die Anzahl der Werte, die Sie konvertieren möchten), und verwenden Sie cvCvtColor herum.
    • Danke für deine Antwort..Kannst du bitte erklären.Da habe ich dieses cvtColor-Funktion, aber es gibt mir Fehler.Ich füge den code, den ich verwendet habe.

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...