首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Orbbec天文深度传感器与OpenCV?

如何使用Orbbec天文深度传感器与OpenCV?
EN

Stack Overflow用户
提问于 2018-02-16 22:42:43
回答 2查看 4.2K关注 0票数 1

我目前正在使用奥尔贝克·阿斯特拉·米尼深度传感器。我下载并安装了阿斯特拉驱动程序和OpenNI2包。深度传感器在我的Windows 10上的设备管理器中显示,只要我将它附加到USB端口上。到目前为止一切都很好。

我的目标是用RGB imagesdepth map阅读OpenCV,并用imshow显示它们。

下面的代码在Visual 2015中编译得很好,但是我得到了这个错误:

代码语言:javascript
复制
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file C:\build\master_winpack-build-win64-vc14\opencv\modules\highgui\src\window.cpp

..。因此,我猜OpenCV无法打开设备,因此我的cv::Mat一直是空的。

我在某个地方读到我需要用OpenCV标志编译OpenNI --这是真的吗?如果是的话,有什么有用的链接可以帮助我取得一些进展吗?知道我可能错过了什么吗?

代码语言:javascript
复制
#include<iostream>
#include<algorithm>
#include<fstream>
#include<System.h>
#include<time.h>
#include<opencv2/core/core.hpp>

using namespace std;

int main(int argc, char **argv) {

    cv::VideoCapture cap;
    cap.open(CV_CAP_OPENNI);
    cap.set(CV_CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE, CV_CAP_OPENNI_VGA_30HZ);
    cap.set(CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION, 1);

    cv::Mat im, dm;     // rgb image, depth map

    while (true)
    {

        if (cap.grab()) {
            cap.retrieve(im, CV_CAP_OPENNI_BGR_IMAGE);
            cap.retrieve(dm, CV_CAP_OPENNI_DEPTH_MAP);
        } else {
            cout << "ERROR: Could not grab image data." << endl;
        }

        if (!im.data) {
            cout << "ERROR: RGB not retrieved." << endl;
        }

        if (!dm.data) {
            cout << "ERROR: Depth map not retrieved." << endl;
        }

        cv::imshow("Image", im);
        cv::imshow("Depth", dm);

        if (cv::waitKey(1) >= 0)
            break;
    }

    cap.release();

    return 0;
}

更新19.02.18:

通过编译带有OpenCV标志的OpenNI库(如描述的这里 )来解决问题。谢谢德米特里!

然而,深度图像仍然相当微弱。有什么办法调整参数吗?尽管,在运行Orbbec的示例应用程序时,深度映像是非常坚实的(它正在使用OpenGL)。所以我想问题就在OpenCV的某个地方?

下面是深度图的截图(倒置为白色,很弱的共振):

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-20 15:04:23

我编写了一个综合指南,如何用包括OpenNI2在内的OpenCV编译球体扣球2 (这是我的初步目标),以便使用Orbbec天文相机作为深度传感器。希望其他在这条线上绊倒的人可以使用它。

票数 0
EN

Stack Overflow用户

发布于 2018-05-23 18:04:06

你问:

然而,深度图像仍然相当微弱。有什么办法调整参数吗?尽管,在运行Orbbec的示例应用程序时,深度映像是非常坚实的(它正在使用OpenGL)。所以我想问题就在OpenCV的某个地方?

尝试实现对深度图像的虚假颜色映射。不同的深度像素的值变化很大,因此,如果直接看到,就很难分辨。

代码语言:javascript
复制
 // Holds the colormap version of the image:
 Mat img_color;
 // Apply the colormap:
 applyColorMap(img_in, img_color, COLORMAP_JET);
 // Show the result:
 imshow("colorMap", img_color);

colormap.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48835876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档