Konvertieren YUVj420p pixel RGB888-format unter Verwendung von gstreamer
im mit gstreamer 1.2 auf feed-frames von meiner IP-Kamera zu opencv Programm
den stream (640*368 YUVj420p) und ich wollen, es zu konvertieren, um RBG888 in der Lage sein, um es in meine opencv Programm
so ist es ein Weg, um die Verwendung von gstreamer zu tun, dass die Umstellung ?
oder muss ich es durch mich tun?
wenn so geben Sie mir bitte die Gleichung, die diese Konvertierung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem einige versuche mit gstreamer habe ich beschlossen, um die Konvertierung selber machen und es funktionierte
Wir müssen zuerst verstehen, die YUVj420p pixel format
Wie gezeigt im Bild oben, die Y' -, U-und V-Komponenten in Y-'UV420 werden getrennt voneinander kodiert in sequentielle Blöcke. Eine Y' - Wert gespeichert ist, für jedes pixel, gefolgt von einem U-Wert für jede 2×2-Quadrat block von Pixeln, und schließlich ein V-Wert für jede 2×2-block. Entsprechenden Y -, U-und V-Werte angezeigt werden mit der gleichen Farbe in der Abbildung oben. Lesen Sie Zeile für Zeile als byte-stream von einem Gerät, das Y' block wäre an position 0 gefunden, wird der U-block an position x×y (6×4 = 24 in diesem Beispiel) und die V-block an position x×y + (x×y)/4 (hier, 6×4 + (6×4)/4 = 30).(kopiert)
hier ist der code, es zu tun (python)
Dieser code wird gezeigt, wie das injizieren Rahmen zu opencv unter Verwendung von gstreamer und machen Sie die Konvertierung
Wie genau sind Sie, um die frames aus der Kamera? Und wie Sie Spritzen es in Ihre opencv-Anwendung?
Angenommen, Sie bekommen Ihre Bilder außerhalb von gstreamer verwenden Sie eine pipeline, wie:
appsrc Kappen="video/x-raw-format=I420, width=640, height=368" ! videoconvert ! capsfilter Kappen="video/x-raw-format=RGB" ! appsink
Und verwenden Sie dann appsrc zu injizieren, die Daten und verwenden appsink wieder zurück zu bekommen. Wenn Sie immer Ihre Daten von der Kamera aus http oder v4l2 können Sie ersetzen appsrc mit souphttpsrc oder v4l2src.