首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zed相机-在c++中用openCV获取数据

Zed相机-在c++中用openCV获取数据
EN

Stack Overflow用户
提问于 2016-10-16 07:40:24
回答 2查看 2.3K关注 0票数 1

我用Zed相机获取深度(https://www.stereolabs.com/)。我想在c++ (使用OpenCV库)中获取数据。

我从这里取了代码:https://www.stereolabs.com/blog/index.php/2015/06/28/zed-with-opencv/

网站上的代码不起作用,因为有一行代码没有编译:

代码语言:javascript
复制
sl::zed::ERRCODE err = zed->init(sl::zed::MODE::PERFORMANCE, 0, true);

我有两个错误:

  1. 对非const的引用的初始值必须是lvalue。
  2. 函数调用中的参数太多。

我查看了函数,函数得到:

代码语言:javascript
复制
ERRCODE init(InitParams &parameters);

我很感谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2016-10-23 20:14:44

是的,如您所见,参数被更改为InitParams。

代码语言:javascript
复制
sl::zed::InitParams params;
params.verbose = true;
sl::zed::ERRCODE err = camera->init(params);
票数 0
EN

Stack Overflow用户

发布于 2017-07-29 03:30:20

你可以做一些类似的事情。

代码语言:javascript
复制
m_pZed = new sl::Camera();
sl::InitParameters zedInit;
zedInit.camera_buffer_count_linux = 4;
zedInit.camera_disable_self_calib = false;
zedInit.camera_fps = m_zedFPS;
zedInit.camera_image_flip = m_bZedFlip;
zedInit.camera_linux_id = 0;
zedInit.camera_resolution = (sl::RESOLUTION) m_zedResolution;
zedInit.coordinate_system = sl::COORDINATE_SYSTEM::COORDINATE_SYSTEM_IMAGE;
zedInit.coordinate_units = sl::UNIT::UNIT_METER;
zedInit.depth_minimum_distance = m_zedMinDist;
zedInit.depth_mode = (sl::DEPTH_MODE) m_zedDepthMode;
zedInit.sdk_gpu_id = -1;
zedInit.sdk_verbose = true;

sl::ERROR_CODE err = m_pZed->open(zedInit);
if (err != sl::SUCCESS)
{
    LOG(ERROR)<< "ZED Error code: " << sl::errorCode2str(err) << std::endl;
    return false;
}

m_pZed->setConfidenceThreshold(m_zedConfidence);
m_pZed->setDepthMaxRangeValue((float) m_zedMaxDist);

// Set runtime parameters after opening the camera
m_zedRuntime.sensing_mode = (sl::SENSING_MODE) m_zedSenseMode;
m_zedRuntime.enable_depth = true;
m_zedRuntime.enable_point_cloud = false;
m_zedRuntime.move_point_cloud_to_world_frame = false;

// Create sl and cv Mat to get ZED left image and depth image
sl::Resolution zedImgSize = m_pZed->getResolution();

// Initialize color image and depth
m_width = zedImgSize.width;
m_height = zedImgSize.height;
m_centerH = m_width / 2;
m_centerV = m_height / 2;

// Best way of sharing sl::Mat and cv::Mat :
// Create a sl::Mat and then construct a cv::Mat using the ptr to sl::Mat data.

m_pzDepth = new sl::Mat(zedImgSize, sl::MAT_TYPE_32F_C1, sl::MEM_GPU);
m_gDepth = slMat2cvGpuMat(*m_pzDepth);
m_gDepth2 = GpuMat(m_gDepth.size(), m_gDepth.type());

更多细节可以在这里找到( ZED.cpp )

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

https://stackoverflow.com/questions/40068058

复制
相关文章

相似问题

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