关于奥比中光OpenNI SDK的环境配置问题

关于奥比中光OpenNI SDK的环境配置问题

第一次使用奥比中光的Astra pro摄像头,照着官网的视频配置,运行后没有成功,提示错误:main.obj ink 2019 _imp_xxxxx 无法解析的外部符号。几经周折后找到了解决方法。

  1. 先按照奥比官网上的视频把VS环境配置好。(https://developer.orbbec.com.cn/develop_details.html?id=1)
  2. 将 windows\SDK\x86\Redist(我配置的是x86、Debug环境)下的所有文件及文件夹拷贝到vs的.exe文件的那个目录下。
  3. 视频中的代码我没跑出来,自己写了一个。
  4. 运行完能得到结果
    在这里插入图片描述

测试代码:

#include<opencv2/opencv.hpp>
#include<OpenNI.h>
using namespace openni;
int main()
{
	int m = 2;
	//初始化OpenNI SDK
	OpenNI::initialize();

	//打开设备
	Device device;
	device.open(ANY_DEVICE);
		//创建深度流
		VideoStream depthStream;
		depthStream.create(device, SENSOR_DEPTH);

		//配置深度流的模式
		VideoMode depthMode;
		depthMode.setResolution(640, 480);
		depthMode.setPixelFormat(PIXEL_FORMAT_DEPTH_1_MM);
		depthMode.setFps(30);
		depthStream.setVideoMode(depthMode);
    	//打开深度流
		depthStream.start();
	    VideoFrameRef frame;


	while (true)
	{
		VideoStream* pstream = &depthStream;

		int changedStreamDummy;
		//等待一帧
		Status rc = OpenNI::waitForAnyStream(&pstream, 1, &changedStreamDummy, 100);

		if (rc != STATUS_OK)
		{
			continue;
		}

		//获取深度帧数据
		rc = depthStream.readFrame(&frame);
		if (rc == STATUS_OK)
		{
			auto depth = frame.getData();
			auto depthWidth = frame.getWidth();
			auto depthHeight = frame.getHeight();

			//处理并渲染深度帧数据
			cv::Mat rawMat(depthHeight, depthWidth, CV_16UC1, (void*)depth);
			cv::Mat depthMat;
			rawMat.convertTo(depthMat, CV_8UC1);

			cv::imshow("Depth Viewer", depthMat);

		}
	
	//按ESC退出
	int key = cv::waitKey(100);
	if (key == 27)
		break;
}

	depthStream.stop();
	depthStream.destroy();

	device.close();

	OpenNI::shutdown();

	return 0;
}
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页