c++ - StereoBm Opencv函数报错 "object of an abstract class cannot be defined"

标签 c++ algorithm opencv syntax-error disparity-mapping

当我初始化 StereoBM 对象时,出现错误“无法定义抽象类的对象”。我检查了 calib3d.hpp,发现 StereoBM 是一个抽象类。请给我一个解决方案,如何在 StereoBM 类中定义所有这些功能

cv::Mat leftimg =cv::imread("leftimage.jpg");
cv::Mat rightimg = cv::imread("rightimage.jpg");
cv::Size imagesize = leftimg.size();

cv::Mat g1,g2,disp,disp8;
cv::cvtColor(leftimg,g1,cv::COLOR_BGR2GRAY);
cv::cvtColor(rightimg,g2,cv::COLOR_BGR2GRAY);

cv::StereoBM *sbm;    
sbm->setDisp12MaxDiff(1);
sbm->setSpeckleRange(8);
sbm->setSpeckleWindowSize(0);
sbm->setUniquenessRatio(0);
sbm->setTextureThreshold(507);
sbm->setMinDisparity(-39);
sbm->setPreFilterCap(61);
sbm->setPreFilterSize(5);
sbm->compute(g1,g2,disp);
normalize(disp, disp8, 0, 255, CV_MINMAX, CV_8U);

cv::imshow("left", leftimg);
cv::imshow("right", rightimg);
cv::imshow("disp", disp8);

最佳答案

如果您使用的是 3.1 版,您将收到以下错误:

use of undeclared identifier 'createStereoBM'

对于 3.1 你可以尝试:

StereoBM *sbm = StereoBM::create(16, 2);

关于c++ - StereoBm Opencv函数报错 "object of an abstract class cannot be defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069861/

相关文章:

c++ - 在字符数组中包含 char 的十进制等价物

c++ - Libcpmt.lib:为 'RuntimeLibrary'检测到错误LNK2038不匹配:值 'MT_StaticRelease'与值 'MD_DynamicRelease'不匹配

algorithm - 两个网络图的并集

algorithm - 用点图案填充矩形

c++ - Alpine docker 容器中简单 OpenCV 程序的链接器错误

c++ - C++中如何在另一个模板类中使用一个模板类

c# - 在 C# 代码中使用 .dll 方法从文件加载数据

c# - 3D空间中的曲线拟合点

python-3.x - 在Windows 7上为Python3安装OpenCV之后,运行时错误R6034

c++ - openCV 2.4.2 上的 calcOpticalFlowPyrLK