前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows下配置OpenNi2(obbrec)

Windows下配置OpenNi2(obbrec)

作者头像
云深无际
发布2021-11-12 18:37:58
9850
发布2021-11-12 18:37:58
举报
文章被收录于专栏:云深之无迹云深之无迹

奥比中光-VisualStdio 2019 文档记录,我前几天写了个这,没编译,今天就写编译的事情。

代码语言:javascript
复制
https://developer.orbbec.com.cn/download.html?id=65

SDK的下载位置,下载,解压,记住路径

这些就是给的Demo,我们来使用一个

创建一个空项目

新建一个CPP的文件

代码语言:javascript
复制
#include <stdio.h>
#include <OpenNI.h>

#include "OniSampleUtilities.h"

#define SAMPLE_READ_WAIT_TIMEOUT 2000 //2000ms

using namespace openni;

int main(int argc, char* argv[])
{
  //initialize openni sdk
  Status rc = OpenNI::initialize();
  if (rc != STATUS_OK)
  {
    printf("Initialize failed\n%s\n", OpenNI::getExtendedError());
    return 1;
  }

  Device device;

  //open device
  rc = device.open(ANY_DEVICE);
  if (rc != STATUS_OK)
  {
    printf("Couldn't open device\n%s\n", OpenNI::getExtendedError());
    return 2;
  }

  VideoStream depth;

  //create depth stream
  if (device.getSensorInfo(SENSOR_DEPTH) != NULL)
  {
    rc = depth.create(device, SENSOR_DEPTH);
    if (rc != STATUS_OK)
    {
      printf("Couldn't create depth stream\n%s\n", OpenNI::getExtendedError());
      return 3;
    }
  }

  //start depth stream
  rc = depth.start();
  if (rc != STATUS_OK)
  {
    printf("Couldn't start the depth stream\n%s\n", OpenNI::getExtendedError());
    return 4;
  }

  VideoFrameRef frame;

  while (!wasKeyboardHit())
  {
    int changedStreamDummy;
    VideoStream* pStream = &depth;

    //wait a new frame
    rc = OpenNI::waitForAnyStream(&pStream, 1, &changedStreamDummy, SAMPLE_READ_WAIT_TIMEOUT);
    if (rc != STATUS_OK)
    {
      printf("Wait failed! (timeout is %d ms)\n%s\n", SAMPLE_READ_WAIT_TIMEOUT, OpenNI::getExtendedError());
      continue;
    }

    //get depth frame
    rc = depth.readFrame(&frame);
    if (rc != STATUS_OK)
    {
      printf("Read failed!\n%s\n", OpenNI::getExtendedError());
      continue;
    }

    //check if the frame format is depth frame format
    if (frame.getVideoMode().getPixelFormat() != PIXEL_FORMAT_DEPTH_1_MM && frame.getVideoMode().getPixelFormat() != PIXEL_FORMAT_DEPTH_100_UM)
    {
      printf("Unexpected frame format\n");
      continue;
    }

    DepthPixel* pDepth = (DepthPixel*)frame.getData();

    int middleIndex = (frame.getHeight() + 1) * frame.getWidth() / 2;

    //print the depth value of the middle pixel of the frame
    printf("[%08llu] %8d\n", (long long)frame.getTimestamp(), pDepth[middleIndex]);
  }

  //stop depth stream
  depth.stop();

  //destroy depth stream
  depth.destroy();

  //close device
  device.close();

  //shutdown OpenNI
  OpenNI::shutdown();

  return 0;
}

把我的代码复制进去

接着开始配置库,或者头的位置。

主要是指明这些地方

项目->属性

SDK的内容

下载的SDK的文件样子

一开始配置这个

添加两个目录

代码语言:javascript
复制
C:\orbbec\Windows_V2.3.0.66\windows\Samples\samples\Common
C:\orbbec\Windows_V2.3.0.66\windows\SDK\x64\Include

common,是这个的头文件

这样添加好了库

链接库-> 常规

把DLL文件的路径加入

接着是输入

写一下这个

记得点应用!!!不然保存不了你的设置

如果不保存,会报错误

如果你配置对了,这些地方没有波浪线

F12

是可以打开的

看看我们的设备管理器

我们现在可以编译了,应该是不报错,编译通过

如果运行的话,需要加一些东西。

代码语言:javascript
复制
C:\orbbec\Windows_V2.3.0.66\windows\Samples\bin_x64

打开一个SDK的bin位置

是这些

接着你打开现在项目的位置

复制一下

运行结果

好像是要复制过去再编译。。。我应该是搞错顺序了。。。

打个断点

看内容

结果

代码语言:javascript
复制
https://developer.orbbec.com.cn/technical_library/OpenNI2/html/autotoc_md25.html

我们看一下程序的意思,上面是demo的位置

先看引入了三个头文件

接着是一个宏,时间2000ms

下面是一个名称空间,名称空间

OponNI2的头文件引入了这个,在我所指的地方是名称空间所在

一开始就对设备使用了初始化的方法,然后去判断返回值

来确定设备有没有就绪

这个是正确和错误的定义位置

这个这个初始化的方法

这些是可能出现的错误值

上面完成以后,开始创建一个设备的对象

这是位置

开启设备,如果ok的话就好

接着又创建了一个视频流的设备,如果上面的设备信息不为空。接着执行下来的语句,创建一个设备,加两个参数,一个是那会儿的设备,还有就是颜色信息。

你看人家这个代码写的,真有味道。这才是工业代码,兼容性MAX

自己看,深度流是3

下面是建立的对象

颜色传输开始!

没怎么细看

小张这里实在看不懂了,就是里面的这个函数

再继续进入

卡住了

接下来是等待一帧,看看这个函数

参数第二是流计数

看这个参数的流转,有趣嗷

这些是一些错误的结构体封装信息

得到一帧彩色的帧

看下这个读帧的函数

模式+像素的格式 然后匹配后面的串

看下面

看这个函数的样子

彩色

我们再看一下这个初始化的东西

里面都指向了一个结构体

大概是这样的

接着按照分量打印出来

这是这个像素值得结构体

停止彩色流,销毁彩色流对象,关闭设备,关掉OpenNI,向SYS发送0

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-10,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com