Kinect ve OpenCV ile çalışıyorum. Bu forumu zaten araştırıyorum ama problemim gibi bir şey bulamadım. Ben Kinect (16 bit) ham derinlik verilerini tutmak, ben * Bir CvMat depolamak ve sonra cvGetImage iletecek ondan bir IplImage * oluşturmak için:16-bit derinliğe CvMat * 8 bit derinliğe dönüştürme
CvMat* depthMetersMat = cvCreateMat(480, 640, CV_16UC1);
[...]
cvGetImage(depthMetersMat,temp);
Ama şimdi çalışmak gerekir cvThreshdold yapmak ve konturları bulmak için bu görüntüde. Bu 2 fonksiyonun girişte 8 bit derinliğinde bir görüntüye ihtiyacı vardır. CvMat * depthMsersMat'ı 8 bit derinlikli CvMat * 'a nasıl dönüştürebilirim?
"Değerleri ölçeklendir" ne anlama geliyor? – Maystro
@Maystro, imzasız bir 16 bitlik bir sayı 0 ile 65.535 arasında bir değere sahip olabilir, ancak 0 - 255 değerlerini tutabilecek 8 bitlik bir sayıya sığdırmak için değerlere ihtiyacımız var. Bu nedenle bir ölçek faktörü uygularız Bu, her değeri bir sabit ile çarptığınız anlamına gelir, bu durumda, 0,00390625 ile. 0 ile 255 arasında bir değere sahip olan orijinal matriste herhangi bir sayı 0, 256 ile 511 arasında bir değer alır. 1, 512 ila 767, 2 olur. – Gillfish
Yani, m2.convertTo (m2/256, CV_8U) gibidir. sağ? Başka bir soru, ya bir ölçek faktörü parametresini geçemediysek? nasıl hesaplanacak? – Maystro