Я использую Kinect и OpenCV (я использую c ++).Я могу получить как RGB, так и изображение глубины.С RGB-изображением я могу «играть» как обычно, размывая его, используя canny (после преобразования в оттенки серого), ... но я не могу сделать то же самое с изображением глубины.Каждый раз, когда я хочу что-то сделать с изображением глубины, я получаю исключения.
У меня есть следующий код для получения изображения глубины:
CvMat* depthMetersMat = cvCreateMat(480, 640, CV_16UC1 );
CvMat* imageMetersMat = cvCreateMat(480, 640, CV_16UC1 );
IplImage *kinectDepthImage = cvCreateImage( cvSize(640,480),16,1);
const XnDepthPixel* pDepthMap = depth.GetDepthMap();
for (int y=0; y<XN_VGA_Y_RES; y++){
for(int x=0;x<XN_VGA_X_RES;x++){
depthMetersMat->data.s[y * XN_VGA_X_RES + x ] = 10 * pDepthMap[y * XN_VGA_X_RES + x];
}
}
cvGetImage(depthMetersMat, kinectDepthImage);
Проблема в том, что я не могу сделатьчто-нибудь с kinectDepthImage.Я попытался преобразовать его в оттенки серого, а затем с помощью canny, но я не знаю, как преобразовать его.
В основном я хотел бы применить canny и laplacian к изображению глубины.