首先,搭建好环境,确保通过openNi能够获得如下的图像:
然而,做图像算法时,用openni或者纯C++并不方便,需要转化成opencv中的Mat数据结构,关键代码如下:
if (oniColorStream.readFrame(&oniColorImg) == STATUS_OK)
{
// convert data into OpenCV type
cv::Mat cvRGBMat(oniColorImg.getHeight(), oniColorImg.getWidth(), CV_8UC3, (void*)oniColorImg.getData());
cv::cvtColor(cvRGBMat, cvRGBMat, CV_RGB2BGR);
cv::Mat A(cvRGBMat, cv::Rect(50, 50, 2, 2));
std::cout << "A = " << std::endl << " " <<A << std::endl << std::endl;
cvRGBImg = (&(IplImage)cvRGBMat);
cvNamedWindow("image", CV_WINDOW_NORMAL);
cvShowImage("image", cvRGBImg);
}
if (oniDepthStream.readFrame(&oniDepthImg) == STATUS_OK)
{
cv::Mat cvRawImg16U(o