gpt4 book ai didi

opencv - 如何在 OpenCV 中使用 Orbbec Astra 深度传感器?

转载 作者:太空宇宙 更新时间:2023-11-03 23:11:43 32 4
gpt4 key购买 nike

我目前正在使用 Orbbec Astra Mini深度传感器。我下载并安装了 Astra Driver and OpenNI2包裹。只要我将深度传感器连接到 USB 端口,它就会显示在我的 Windows 10 的设备管理器中。到目前为止一切都很好。

我的目标是使用 OpenCV 读取 RGB 图像深度图 并使用 imshow 显示它们。

以下代码在 Visual Studio 2015 中编译正常,但出现此错误:

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 一直是空的。

我在某处读到我需要使用 OpenNI 标志编译 OpenCV - 是真的吗?如果是这样,是否有任何有用的链接可以帮助我取得一些进展?有什么我可能错过的想法吗?

#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:

问题通过使用 OpenNI 标志编译 OpenCV 库解决,如所述 here .谢谢德米特里!

然而,深度图像仍然很弱。任何想法在哪里/如何调整参数?虽然,在运行 Orbbec Astra SDK 的示例应用程序时,深度图像非常可靠(使用 OpenGL)。所以我猜问题出在 OpenCV 的某个地方?

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

enter image description here

最佳答案

我写了一个 comprehensive guide如何编译ORB SLAM 2 (这是我的初步目标)与 OpenCV包括 OpenNI2为了使用我的 Orbbec Astra camera作为深度传感器。希望绊倒这个线程的其他人可以使用它。

关于opencv - 如何在 OpenCV 中使用 Orbbec Astra 深度传感器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48835876/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com