Wie konvertiere ich von einem CVPixelBufferRef zu einem openCV cv :: Mat

8

Ich möchte ein paar Operationen an einem CVPixelBufferRef durchführen und mit einem cv::Mat

auskommen
  • auf eine Region von Interesse zuschneiden
  • skaliert auf eine feste Dimension
  • entzerrt das Histogramm
  • konvertiert in Graustufen - 8 Bit pro Pixel ( CV_8UC1 )

Ich bin nicht sicher, was die effizienteste Reihenfolge ist, dies zu tun, aber ich weiß, dass alle Operationen auf einer open: CV-Matrix verfügbar sind, also würde ich gerne wissen, wie man sie konvertiert.

> %Vor%     
Robert 14.10.2013, 10:57
quelle

2 Antworten

12

Ich fand die Antwort in einigen ausgezeichneten GitHub-Quellcode . Ich habe es hier der Einfachheit halber angepasst. Es macht auch die Graustufen Konvertierung für mich.

%Vor%

Ich denke, dass die beste Reihenfolge sein wird:

  1. Konvertiere in Graustufen (da es fast automatisch gemacht wird)
  2. Zuschneiden (dies sollte ein schneller Vorgang sein und die Anzahl der Pixel reduzieren, mit denen gearbeitet werden soll)
  3. Verkleinern
  4. Entzerre das Histogramm
Robert 14.10.2013, 13:34
quelle
2

Ich benutze das. Mein cv:Mat ist konfiguriert BGR (8UC3) colorFormat.

CVImageBufferRef - & gt; Lebenslauf :: Mat

%Vor%

Lebenslauf :: Mat - & gt; CVImageBufferRef (CVPixelBufferRef)

%Vor%     
newinH 18.04.2017 06:54
quelle