저는 Kinect 및 OpenCV와 함께 작업하고 있습니다. 이미이 포럼에서 검색했지만 내 문제와 같은 것을 찾지 못했습니다. 내가 키 넥트 (16 비트)에서 원시 깊이 데이터를 유지, 나는 *는 CvMat에 저장 한 후 나는 cvGetImage로 전달 그것에서 IplImage *를 만들 :16 비트 심도 CvMat *를 8 비트 깊이로 변환
CvMat* depthMetersMat = cvCreateMat(480, 640, CV_16UC1);
[...]
cvGetImage(depthMetersMat,temp);
을하지만 지금은 일할 필요 이 이미지에서 cvThreshdold를 수행하고 등고선을 찾으십시오. 이 두 함수는 8 비트 깊이 영상을 입력으로 필요로합니다. CvMat * depthMetersMat를 8 비트 심도의 CvMat *로 변환하려면 어떻게해야합니까?
"크기 조정"의 의미는 무엇입니까? – Maystro
@Maystro에서 부호없는 16 비트 숫자는 0에서 65,535 사이의 값을 가질 수 있지만, 0에서 255까지의 값만 가질 수있는 8 비트 숫자에 맞게 값이 필요합니다. 이는 각 값에 상수 (이 경우 0.00390625)를 곱하는 것을 의미합니다. 0에서 255까지의 값을 갖는 원래의 행렬의 숫자는 새로운 값 0을 얻습니다. 256에서 511은 1이되고, 512에서 767은 2가됩니다. – Gillfish
따라서 m22.convertTo (m2/256, CV_8U)와 같습니다. 권리? 또 다른 질문은, 만약 우리가 scale factor 매개 변수를 전달하지 않았다면? 어떻게 계산 될까요? – Maystro