KINECT人物抠取 图像对齐(KINECTSDK + OPENCV)

本文介绍了一个利用Kinect SDK和OpenCV 2.4.4进行图像处理的程序,主要功能是从彩色图像中提取前景,并通过MapColorFrameToDepthFrame函数实现深度图像与彩色图像的对齐。虽然直接效果一般,但经过进一步处理,可以为实际应用提供有价值的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


程序用于将彩色图像中的前景进行提取。意义不大,效果还好

 

用到:Kinect SDK + C++ + OpenCV2.4.4

 

在程序中用到了深度图像和彩色图像对齐的函数MapColorFrameToDepthFrame

对抠取的图像,最好再进过必要的处理,才能有实际的用处



#include <opencv2\opencv.hpp>  
#include<iostream>
//windows的头文件,必须要,不然NuiApi.h用不了
#include <Windows.h>
//Kinect for windows 的头文件
#include "NuiApi.h"

using namespace std;
using namespace cv;

#include <d3d11.h>


//最远距离(mm)
const int MAX_DISTANCE = 3500;
//最近距离(mm)
const int MIN_DISTANCE = 200;

const LONG m_depthWidth = 640;
const LONG m_depthHeight = 480;
const LONG m_colorWidth = 640;
const LONG m_colorHeight = 480;
const LONG cBytesPerPixel = 4;

int main()
{
	//彩色图像
	Mat image_rgb;
	//深度图像
	Mat image_depth;

	//创建一个MAT
	image_rgb.create(480,640,CV_8UC3);
	image_depth.create(480,640,CV_8UC1);

	//一个KINECT实例指针
	INuiSensor*  m_pNuiSensor = NULL;

	if (m_pNuiSensor != NULL)
	{
		return 0;
	}

	//记录当前连接KINECT的数量(为多连接做准备)
	int iSensorCount;
	//获得当前KINECT的数量
	HRESULT hr = NuiGetSensorCount(&iSensorCount);


	//按照序列初始化KINETC实例,这里就连接了一个KINECT,所以没有用到循环
	hr = NuiCreateSensorByIndex(iSensorCount - 1, &m_pNuiSensor);
	//初始化,让其可以接收彩色和深度数据流
	hr = m_pNuiSensor->NuiInitialize(NUI_INITIALIZE_FLAG_USES_COLOR | NUI_INITIALIZE_FLAG_USES_DEPTH);

	//判断是否出错
	if (FAILED(hr))
	{
		cout<<"NuiInitialize failed"<<endl;
		return hr;
	}

	//彩色
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值