您的位置首页百科问答

如何用Opencv保存Kinect的图片

如何用Opencv保存Kinect的图片

的有关信息介绍如下:

如何用Opencv保存Kinect的图片

用opencv将从kinect端获取的视频流以图像的形式保存下来,可以用来进行图像处理。模式识别等问题,具体的配置见其它经验,此处只讲最核心的图片保存,包括彩色图片,深度图片,骨架图片

首先打开一个工程,这个工程是利用kinect能产生正确的彩色数据流,深度流等,并能利用Opencv在电脑上正确显示,如下图,

彩色图,本人将骨架画在彩色图中可以一起保存

深度图

骨架图

你想通过按键盘上的什么键来保存哪种相应的图,

定义: 小写“c” 彩色图片(如果将骨架加在彩色图中,会将彩色图片和

骨架数据一起保存)

小写“d” 深度图片

小写“s” 骨架图片

小写“a” 上述所有图片

获取按键值,用 cvWaitKey()函数,会返回当前的按建值,若是Esc没退出显示,并释放设备,如下定义

最后调用一下检测按键的函数,1是函数名,将按键值传过来,2,是相应的按键动作匹配,3是文件要保存的相对路径,4是要保存的图想

下面给出核心代码

保存图片函数:

void imageSaveByKey(int & c)

{

int a=c;

switch(a)

{

case 'c':

{

sprintf(ImagesName, "../Imagesave/color/color%.3d.jpg", cImgNum);

cvSaveImage(ImagesName,colorImage);

cImgNum++;

};break;

case 'd':

{

sprintf(ImagesName, "../Imagesave/depth/depth%.3d.jpg", dImgNum);

cvSaveImage(ImagesName,depthImage);

dImgNum++;

};break;

case 's':

{

sprintf(ImagesName, "../Imagesave/skeleton/skeleton%.3d.jpg", sImgNum);

cvSaveImage(ImagesName,skeletonImage);

sImgNum++;

};break;

case 'a':

{

sprintf(ImagesName, "../Imagesave/color/color%.3d.jpg", cImgNum);

cvSaveImage(ImagesName,colorImage);

cImgNum++;

sprintf(ImagesName, "../Imagesave/depth/depth%.3d.jpg", dImgNum);

cvSaveImage(ImagesName,depthImage);

dImgNum++;

sprintf(ImagesName, "../Imagesave/skeleton/skeleton%.3d.jpg",

sImgNum);

cvSaveImage(ImagesName,skeletonImage);

sImgNum++;

};break;

default:break;

}

}