OpenNI+OpenCV对Kinect采集的彩色图和深度图进行滤波

平台:Windows 7 x86,OpenCV2.4.9,OpenNI1.5.4.0,VS2010

        采用了4种方式对彩色图和深度图进行滤波,分别为均值滤波、高斯滤波、中值滤波和双边滤波。并且利用滚动条实现4种滤波方式的参数可调。

<span style="font-size:14px;">#include <stdlib.h>  
#include <iostream>  
#include <string>  

#include <XnCppWrapper.h>  
#include <opencv2/opencv.hpp>  

using namespace std;  
using namespace xn;  
using namespace cv;  

//---------------------------------【全局变量声明】---------------------------------//
Mat cvBGRImage,       blur_c_out, GaussianBlur_c_out, MedianBlur_c_out, bilateralFilter_c_out; 
Mat cvDepthImage8UC1, blur_g_out, GaussianBlur_g_out, MedianBlur_g_out, bilateralFilter_g_out;  

int g_nMeanBlurValue=10;           //均值滤波内核值
int g_nGaussianBlurValue=6;	   //高斯滤波内核值
int g_nMedianBlurValue=10;	   //中值滤波参数值
int g_nBilateralFilterValue=10;	   //双边滤波参数值
//---------------------------------------------------------------------------------//

//---------------------------------【全局函数声明】---------------------------------//
static void on_MeanBlur_c(int, void *);			//均值滤波器(彩色)
static void on_GaussianBlur_c(int, void *);		//高斯滤波器(彩色)
static void on_MedianBlur_c(int, void *);		//中值滤波器(彩色)
static void on_BilateralFilter_c(int, void *);	        //双边滤波器(彩色)

static void on_MeanBlur_g(int, void *);			//均值滤波器(深度)
static void on_GaussianBlur_g(int, void *);		//高斯滤波器(深度)
static void on_MedianBlur_g(int, void *);		//中值滤波器(深度)
static void on_BilateralFilter_g(int, void *);	        //双边滤波器(深度)
void ShowHelpText();
//---------------------------------------------------------------------------------//

void CheckOpenNIError(XnStatus eResult,string sStatus)	//检测错误并返回错误的函数  
{  
	if(eResult != XN_STATUS_OK)  
		cout << sStatus << "Error: " << xnGetStatusString(eResult) << endl;
}  

int main()  
{  
	//system("color 4F");	//cmd窗口颜色  

	ShowHelpText();	

	XnStatus eResult = XN_STATUS_OK;  
	ImageMetaData imageMD;  
	DepthMetaData depthMD;  

	Context mContext;	//初始化上下文对象  
	eResult = mContext.Init();  
	CheckOpenNIError(eResult, "Initialize context");  

	ImageGenerator mImageGenerator;		//创建彩色图像生产节点  
	eResult = mImageGenerator.Create(mContext);  
	CheckOpenNIError(eResult, "Create image generator");  

	DepthGenerator mDepthGenerator;		//创建深度图像生产节点  
	eResult = mDepthGenerator.Create(mContext);  
	CheckOpenNIError(eResult, "Create depth generator");  

	XnMapOutputMode mapMode;	//设置图像分辨率  
 	mapMode.nXRes = 640;  
 	mapMode.nYRes = 480; 
	mapMode.nFPS  = 30;  
	eResult = mImageGenerator.SetMapOutputMode(mapMode);  
	eResult = mDepthGenerator.SetMapOutputMode(mapMode);  

	mDepthGenerator.GetAlternativeViewPointC
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值