私は Kinect と OpenCV を使用しています (私は c++ を使用しています)。RGB 画像と深度画像の両方を取得できます。RGB画像では、キャニーを使用して(グレースケールに変換した後)ぼかして、いつものように「再生」できますが、深度画像では同じことはできません。深度画像で何かをしたいたびに、例外が発生しました。
深度画像を取得する次のコードがあります。
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 で何もできないことです。グレースケールに変換してからキャニーを使用しようとしましたが、変換方法がわかりません。
基本的には深度画像にキャニーとラプラシアンを適用したいと思います。