gpt4 book ai didi

c++ - Type cv::StereoBM 必须实现继承的纯虚方法

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:49 26 4
gpt4 key购买 nike

我一直致力于使用 StereoBM 类根据两个摄像头输入源生成视差图。

我可以创建一个指向变量 StereoBM *sbm;但是每当我调用一个函数时,都会出现发布版本的段错误。由于 malloc(): memory corruption,调试构建将不会运行,因为它中止了.

Disparity_Map::Disparity_Map(int rows, int cols, int type) : inputLeft(), inputRight(), greyLeft(), greyRight(), Disparity() {
inputLeft.create(rows, cols, type);
inputRight.create(rows, cols, type);

greyLeft.create(rows, cols, type);
greyRight.create(rows, cols, type);
}
void Disparity_Map::computeDisparity(){

cvtColor(inputLeft, greyLeft, CV_BGR2GRAY);
cvtColor(inputRight, greyRight, CV_BGR2GRAY);

StereoBM *sbm;

// This is where the segfault/memory corruption occurs
sbm->setNumDisparities(112);
sbm->setBlockSize(9);
sbm->setPreFilterCap(61);
sbm->setPreFilterSize(5);
sbm->setTextureThreshold(500);
sbm->setSpeckleWindowSize(0);
sbm->setSpeckleRange(8);
sbm->setMinDisparity(0);
sbm->setUniquenessRatio(0);
sbm->setDisp12MaxDiff(1);

sbm->compute(greyLeft, greyRight, Disparity);
normalize(Disparity, Disparity, 0, 255, CV_MINMAX, CV_8U);
}

我不完全确定我在上面做错了什么。创建非指针变量时,我对类的所有方法都有此警告:

The type 'cv::StereoBM' must implement the inherited pure virtual method 'cv::StereoMatcher::setSpeckleRange'

我已经包含标题 <opencv2/calib3d/calib3d.hpp> ,我已确保库已链接,并且我正在运行 opencv 3.1.0。

谁能阐明以上所有内容?因为我仍在学习 OpenCV 并插入自己学习 C++。

最佳答案

StereoBM *sbm;

你在没有分配对象的情况下声明指针。

cv::Ptr<cv::StereoBM> sbm = cv::StereoBM::create() - 这是创建 StereoBM 对象的正确方法。

关于c++ - Type cv::StereoBM 必须实现继承的纯虚方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796282/

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