我正在尝试从两年前的一些代码中运行新的opencv
版本(4.0)。
代码在这里:
及其相关部分如下。返回函数时出现错误,提示:
错误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;