从cv :: Ptr <cv :: descriptormatcher>创建一个类?

时间:2018-07-23 15:47:44

标签: opencv

我正在尝试从两年前的一些代码中运行新的opencv版本(4.0)。

代码在这里:

https://github.com/gwli/brisk

及其相关部分如下。返回函数时出现错误,提示:

错误C2440'返回':无法从'brisk :: BruteForceMatcher *'转换为'cv :: Ptr'

我想这是可以预期的,因为返回类型与函数类型不同。有办法使它工作吗?

//功能:

namespace brisk {
// Adapted from OpenCV 2.3 features2d/matcher.hpp
cv::Ptr<cv::DescriptorMatcher> BruteForceMatcher::clone(bool emptyTrainData)
const {
  BruteForceMatcher* matcher = new BruteForceMatcher(distance_);
  if (!emptyTrainData) {
    std::transform(trainDescCollection.begin(), trainDescCollection.end(),
                   matcher->trainDescCollection.begin(), clone_op);
  }
  return matcher;
}

//标题定义:

namespace brisk {
class BruteForceMatcher;
class  BruteForceMatcher : public cv::DescriptorMatcher {
 public:
  BruteForceMatcher(const brisk::Hamming& distance = brisk::Hamming())
      : distance_(distance) { }
  virtual ~BruteForceMatcher() { }
  bool isMaskSupported() const override {
    return true;
  }
  cv::Ptr<cv::DescriptorMatcher> clone(bool emptyTrainData = false) const
      override;

0 个答案:

没有答案