Ich muss das Farb-RGB-Bild von einer Kinnect-Kamera aufnehmen, aber ich möchte es in OpenCV zeigen, da dies nur ein Teil eines größeren Programms ist. Ich weiß, dass OpenCV Kompatibilität mit OpenNI hat, wenn Sie das Flag setzen, aber obwohl ich versuchte, konnte CMake den Pfad zu OpenNI2 nicht finden, also konnte ich OpenCV mit OpenNI nicht bauen. Wie auch immer, ich denke, es ist gut zu wissen, wie man OpenNI-Frames manuell in openCV-Frames konvertiert, also habe ich beschlossen, diesem Weg zu folgen.
Um den Farbrahmen in OpenNI zu erfassen, habe ich Folgendes versucht:
%Vor%Aber jetzt verstehe ich nicht, wie man die Umwandlung zu cv :: Mat macht.
Hat jemand das geschafft?
Ok, zuerst sollten Sie auf diese Weise die Initialisierung von der Schleife zum Lesen von Frames trennen.
Initialisierung
%Vor%Jetzt kommt die Hauptschleife zum Lesen von Frames. Sie haben fast alles gemacht, das einzige, was übrig bleibt, ist den Puffer auf die openCV-Matte zu kopieren.
Schleife zum Lesen von Frames
%Vor% Nach der obigen Antwort von @ Jav_Rock ist die Lösung für IR und Tiefe ähnlich, abgesehen von den folgenden (anstelle von SENSOR_COLOR
, CV_8UC3
bzw. RGB888Pixel
):
Tiefe
SENSOR_DEPTH
CV_16UC1
DepthPixel
Beachten Sie, dass Sie den PixelMode für das VideoFormat des VideoStreams wahrscheinlich auf PIXEL_FORMAT_DEPTH_100_UM
setzen möchten, da ansonsten Ihr Tiefenbild sehr schwarz aussieht.
IR
SENSOR_IR
CV_16UC1
Grayscale16Pixel
Beachten Sie schließlich, dass weder Tiefe noch IR den Aufruf cv::cvtColor
benötigen.
Tags und Links opencv kinect rgb simple-openni