First time here? Check out the FAQ!

Ask Your Question
1

StereoSGBM Help

asked Nov 26 '13

ed3dalltime gravatar image

updated Nov 26 '13

Hello everybody. I have a problem in compiling StereoSGBM class.

I am trying to create one instance of the SGBM class. I found some tutorials on Google, but it seems that I misunderstood something:

The problem are these lines:

StereoSGBM sgbm;
sgbm(g1, g2, disp);

where g1 and g2 are the CV_8UC1 images and disp is the disparity map. The error I get from the compiler is

/home/name/NetBeansProjects/ED3D/main.cpp: In function int main(int, char**)’:
/home/name/NetBeansProjects/ED3D/main.cpp:122:16: error: cannot declare variable sgbm to be of abstract type cv::StereoSGBM

Thank you for any advice ;)

Preview: (hide)

Comments

could you clarify, which opencv version you are using ?

i.e. in 3.0 you'd have to use:

Ptr<StereoSGBM> sgbm = createStereoBM();

sgbm->compute(g1,g2,disp);

berak gravatar imageberak (Nov 26 '13)edit

It was exactly my problem. Thank you ;)

ed3dalltime gravatar imageed3dalltime (Nov 26 '13)edit

1 answer

Sort by » oldest newest most voted
0

answered Nov 26 '13

xaffeine gravatar image

The following works for me.

#include "opencv2/calib3d/calib3d.hpp"
void foo()
{
  cv::StereoSGBM sgbm;
  sgbm( cv::Mat(), cv::Mat(), cv::Mat() );
}

The error you got is a little surprising. Without calib3d.hpp, StereoSGBM should be an undefined symbol. Maybe you have a forward declaration getting in the way.

Preview: (hide)

Question Tools

Stats

Asked: Nov 26 '13

Seen: 3,205 times

Last updated: Nov 26 '13