Kinect学习笔记之(一)开发环境配置

 

                                    Kinect学习笔记之(一)开发环境配置

                                                                                          Email:[email protected]

                                                                                          https://blog.csdn.net/qq_37904531

我的Kinect开发平台是:

Windows10+Kinect2.0+VisualStudio2019+opencv4.5,具体安装配置步骤如下:

1、安装 kinect for windows SDK 2.0

安装成功后可以看到:

kinect插电后,电源适配器指示灯为黄色,当kinect通过USB与电脑连接后,电源适配器指示灯变为白色(这一点并不能区分USB2.0和3.0,因为都会变为白色)。

 

启动SDK Browser v2.0

其中第一个Kinect Configuration Verifier是kinect自检程序,运行后

USB Controller显示警告不影响正常开发使用,可不用理会,只要没有出现x就代表正常。

 

2.在VS2019中配置Kinect2.0SDK和OpenCV4.5

新建一个控制台应用程序test3,解决方案->属性->配置中要选择x64 debug,不然会报 “fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突”。

这个问题可以参考博客 https://blog.csdn.net/tfy1028/article/details/8660823/

接下来设置项目的属性:

(1)VC++目录(包含目录和库目录)

(2)链接器->输入->附加依赖项,添加Kinect20.lib

接下来是配置OpenCV4.5,可以在官网自行下载,解压后记得配置Path环境变量

接下来和添加kinect过程类似

(1)VC++目录中分别添加包含目录,库目录

(2)链接器->输入->附加依赖项

以上便是基本的配置步骤啦,可以用如下的程序做个测试,显示深度图像。

#include <iostream>

// OpenCV 头文件
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
// Kinect for Windows SDK 头文件
#include <Kinect.h>

using namespace std;

int main()
{
	cout << "Hello World!\n";

	// 1a.获取感应器
	IKinectSensor* pSensor = nullptr;
	GetDefaultKinectSensor(&pSensor);

	// 1b. 打开感应器
	pSensor->Open();

	// 2a. 取得深度数据
	IDepthFrameSource* pFrameSource = nullptr;
	pSensor->get_DepthFrameSource(&pFrameSource);

	// 2b. 取得深度数据的描述信息(宽、高)
	int        iWidth = 0;
	int        iHeight = 0;
	IFrameDescription* pFrameDescription = nullptr;
	pFrameSource->get_FrameDescription(&pFrameDescription);
	pFrameDescription->get_Width(&iWidth);
	pFrameDescription->get_Height(&iHeight);
	pFrameDescription->Release();
	pFrameDescription = nullptr;

	// 2c. 取得感应器的“可靠深度”的最大、最小距离
	UINT16 uDepthMin = 0, uDepthMax = 0;
	pFrameSource->get_DepthMinReliableDistance(&uDepthMin);
	pFrameSource->get_DepthMaxReliableDistance(&uDepthMax);
	cout << "Reliable Distance: "
		<< uDepthMin << " – " << uDepthMax << endl;

	// 建立图像矩阵,mDepthImg用来存储16位的图像数据,直接用来显示会接近全黑
	//不方便观察,用mImg8bit转换成8位再显示
	cv::Mat mDepthImg(iHeight, iWidth, CV_16UC1);
	cv::Mat mImg8bit(iHeight, iWidth, CV_8UC1);
	cv::namedWindow("DepthImage");

	// 3a. 打开深度数据阅读器
	IDepthFrameReader* pFrameReader = nullptr;
	pFrameSource->OpenReader(&pFrameReader);

	// 主循环
	while (1)
	{
		// 4a. 取得最新数据
		IDepthFrame* pFrame = nullptr;
		if (pFrameReader->AcquireLatestFrame(&pFrame) == S_OK)
		{
			// 4c. 把数据存入16位图像矩阵中
			pFrame->CopyFrameDataToArray(iWidth * iHeight,
				reinterpret_cast<UINT16*>(mDepthImg.data));//强制转换数据类型

		   // 4d. 把16位转换成8位
			mDepthImg.convertTo(mImg8bit, CV_8U, 255.0f / uDepthMax);//converto()第一个参数是输出矩阵,第二个是转换类型,第三个是缩放因子,其中4500是深度数据的最大距离
			cv::imshow("DepthImage", mImg8bit);
			//要改变显示的颜色和效果,就改变从mDepthImg到mImg8bit的转换  
			// 4e. 释放变量pFrame
			pFrame->Release();
		}

		if (cv::waitKey(30) == VK_ESCAPE) {
			break;
		}
	}

	// 3b. 释放变量pFrameReader
	pFrameReader->Release();
	pFrameReader = nullptr;

	// 2d.释放变量pFramesSource
	pFrameSource->Release();
	pFrameSource = nullptr;

	// 1c.关闭感应器
	pSensor->Close();

	// 1d.释放感应器
	pSensor->Release();
	pSensor = nullptr;

	return 0;


}

此外,如果运行程序出现错误“ 无法启动此程序,因为计算机中丢失opencv_world450.dll。请尝试重新安装改程序已解决此问题”,解决方法如下:

定位到OpenCV的bin目录,我的路径是H:\opencv\opencv\build\x64\vc15\bin,复制如下三个文件到C:\Windows\System32后便可以解决了。可以参考博客:

https://www.cnblogs.com/tansuoxinweilai/p/10424361.html

以上便是VS2019配置Kinect2.0和OpenCV4.5的基本步骤可可能出现错误的解决方法,如果有不足的地方欢迎大家留言指正。大家一起交流,共同进步。

猜你喜欢

转载自blog.csdn.net/qq_37904531/article/details/111872891
今日推荐