2016-10-16 12 views
1

Я использовал с Zed-камерой для получения глубины (https://www.stereolabs.com/). Я хочу получить данные на C++ (используя библиотеку OpenCV).Zed Camera - получить данные в C++ с помощью openCV

Я взял код здесь: https://www.stereolabs.com/blog/index.php/2015/06/28/zed-with-opencv/

код на сайте не работает, потому что одна строка не компилируется:

sl::zed::ERRCODE err = zed->init(sl::zed::MODE::PERFORMANCE, 0, true); 

Я получаю 2 ошибки:

  1. Начальная величина ссылки на не-const должна быть lvalue

  2. слишком много аргументов в вызове функции.

Я посмотрел в функции, функции получим:

ERRCODE init(InitParams &parameters); 

Я был бы признателен за вашу помощь

ответ

0

Да как вы можете видеть параметры были изменены на InitParams.

sl::zed::InitParams params; 
params.verbose = true; 
sl::zed::ERRCODE err = camera->init(params); 
+0

Спасибо, Но теперь я получаю много ошибок благостного LNK2019. Пример: ошибка LNK2019: неразрешенный внешний символ «void __cdecl cv :: fastFree (void *)» (? fastFree @ cv @@ YAXPAX @ Z), на который ссылается функция «public: __thiscall cv :: Mat :: ~ Mat (void)" (?? 1Mat @ cv @@ QAE @ XZ) Знаете почему? Спасибо :-) – user2586778

0

Вы можете сделать что-то похожее на это.

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()); 

Более подробную информацию можно найти здесь (https://github.com/yankailab/OpenKAI/blob/master/src/Vision/_ZED.cpp)