W mojej aplikacji otrzymuję ramkę głębi podobną do ramki głębi pobranej z próbki głębokości. Czego nie rozumiem, to dlaczego w obrazie występują dyskretne poziomy? Nie wiem, co nazywam tymi nagłymi zmianami wartości głębokości. Najwyraźniej moja połowa prawej ręki jest cała czarna, a moja lewa ręka wydaje się podzielona na 3 takie poziomy. Co to jest i jak mogę to usunąć?Obraz głębokości matrycy
Kinect Depth Basics Sample http://i46.tinypic.com/2hwekxd.jpg
Kiedy uruchomić aplikację KinectExplorer Sample uzyskać głębię następująco. To jest obraz głębi, który chcę wygenerować z surowych danych głębi.
Kinect Explorer http://i50.tinypic.com/2rwx1z5.jpg
Używam Microsoft Kinect SDK (v1.6) NuiApi wraz z OpenCV. Mam następujący kod:
BYTE *pBuffer = (BYTE*)depthLockedRect.pBits; //pointer to data having 8-bit jump
USHORT *depthBuffer = (USHORT*) pBuffer; //pointer to data having 16-bit jump
int cn = 4;
this->depthFinal = cv::Mat::zeros(depthHeight,depthWidth,CV_8UC4); //8bit 4 channel
for(int i=0;i<this->depthFinal.rows;i++){
for(int j=0;j<this->depthFinal.cols;j++){
USHORT realdepth = ((*depthBuffer)&0x0fff); //Taking 12LSBs for depth
BYTE intensity = (BYTE)((255*realdepth)/0x0fff); //Scaling to 255 scale grayscale
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 0] = intensity;
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 1] = intensity;
this->depthFinal.data[i*this->depthFinal.cols*cn + j*cn + 2] = intensity;
depthBuffer++;
}
}
Proszę dokładnie sprawdzić swoje zdjęcia, nie są wyświetlane. –
Zmieniono adresy URL obrazów. Sprawdź ponownie. – thinkquester
Co to jest '' cn'' i czy naprawdę musi to być '' 4'', a nie '' 3''? Byłoby również podejrzenie, gdzie faktycznie wydrukujesz obraz. – Tim