Ich arbeite mit Kinect und OpenCV. Ich suche bereits in diesem Forum, aber ich habe nichts gefunden wie mein Problem. Ich behalte die rohen Tiefendaten von Kinect (16 Bit), speichere sie in einem CvMat * und gebe sie dann an cvGetImage weiter, um daraus ein IplImage * zu erstellen:
%Vor%Aber jetzt muss ich an diesem Bild arbeiten, um cvThreshold zu machen und Konturen zu finden. Diese 2 Funktionen benötigen ein 8-Bit-Tiefenbild in der Eingabe. Wie kann ich die CvMat * depthMetersMat in einem 8-Bit-Tiefen-CvMat * konvertieren?
Die Antwort, die @SSteve gab, war fast der Trick für mich, aber der Aufruf von convertTo
schien nur das höherwertige Byte abzubrechen, anstatt die Werte tatsächlich auf einen 8-Bit-Bereich zu skalieren. Da @Sirnino nicht angegeben hat, welches Verhalten gewünscht wurde, dachte ich, ich würde den Code veröffentlichen, der die (lineare) Skalierung durchführt, falls jemand anderes das tun möchte.
SSteves ursprünglicher Code:
%Vor% Um die Werte zu skalieren, müssen Sie nur den Skalierungsfaktor (1/256 oder 0,00390625 für 16-Bit- bis 8-Bit-Skalierung) als dritten Parameter (Alpha) zum Aufruf von convertTo
%Vor%
Sie können auch einen vierten Parameter (Delta) hinzufügen, der zu jedem Wert hinzugefügt wird, nachdem er mit Alpha multipliziert wurde. Weitere Informationen finden Sie in den Dokumenten .
Ich arbeite mit Kinect und OpenCV. Ich suche bereits in diesem Forum, aber ich habe nichts gefunden wie mein Problem. Ich behalte die rohen Tiefendaten von Kinect (16 Bit), speichere sie in einem CvMat * und gebe sie dann an cvGetImage weiter, um daraus ein IplImage * zu erstellen:
%Vor%Aber jetzt muss ich an diesem Bild arbeiten, um cvThreshold zu machen und Konturen zu finden. Diese 2 Funktionen benötigen ein 8-Bit-Tiefenbild in der Eingabe. Wie kann ich die CvMat * depthMetersMat in einem 8-Bit-Tiefen-CvMat * konvertieren?
Die Antwort, die @SSteve gab, war fast der Trick für mich, aber der Aufruf von %code% schien nur das höherwertige Byte abzubrechen, anstatt die Werte tatsächlich auf einen 8-Bit-Bereich zu skalieren. Da @Sirnino nicht angegeben hat, welches Verhalten gewünscht wurde, dachte ich, ich würde den Code veröffentlichen, der die (lineare) Skalierung durchführt, falls jemand anderes das tun möchte.
SSteves ursprünglicher Code:
%Vor%Um die Werte zu skalieren, müssen Sie nur den Skalierungsfaktor (1/256 oder 0,00390625 für 16-Bit- bis 8-Bit-Skalierung) als dritten Parameter (Alpha) zum Aufruf von %code% %Vor%
Sie können auch einen vierten Parameter (Delta) hinzufügen, der zu jedem Wert hinzugefügt wird, nachdem er mit Alpha multipliziert wurde. Weitere Informationen finden Sie in den Dokumenten .