gpt4 book ai didi

c++ - 特征检测器不在 OpenCV 3.0.0 中?

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:51 24 4
gpt4 key购买 nike

我正在尝试使用 OpenCV FeatureDetector 类; MSER、Good Features to Track、FAST 等

但是当我使用它们时,我得到了编译器错误:

Error 1 error C2259: 'cv::FastFeatureDetector' : cannot instantiate abstract class

我是否需要包含特定的头文件、dll 或其他内容?怎么了?我尝试使用的几乎所有 FeatureDescriptor 都会出现编译器错误。例如,使用 GoodFeaturesToTrackDetector 会导致另一个编译器错误:

Error 1 error C2039: 'GoodFeaturesToTrackDetector' : is not a member of 'cv'

我正在使用 OpenCV 3.0.0。我在使用 VS2013 的 Windows 8.1 上。我包括以下 OpenCV 库:

  • opencv_world300d.lib
  • opencv_highgui300d.lib
  • opencv_imgcodecs300d.lib
  • opencv_text300d.lib
  • opencv_features2d300d.lib
  • opencv_imgproc300d.lib
#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/calib3d.hpp"

using namespace cv;

void featureDetectorExperimentation()
{
image = imread("i.jpg");

std::vector<KeyPoint> keypoints;
Ptr<FeatureDetector> fast = new FastFeatureDetector(40);
// Above line compiler error: "Error 1 error C2259: 'cv::FastFeatureDetector' : cannot instantiate abstract class"

fast->detect(image, keypoints);

drawKeypoints(image, keypoints, image, Scalar(255, 255, 255), DrawMatchesFlags::DRAW_OVER_OUTIMG);

imshow("Image", image);
}

最佳答案

您收到的错误意味着您尝试实例化的类是 abstract这基本上意味着您只能使用从它继承的类的对象,而不能使用类本身。

在这种情况下,您并不真正关心您将要使用的确切实现,因此您可以使用指向 FastFeatureDetector 类型对象的指针。这个指针可以由 opencv api 为你创建 FastFeatureDetector::create像这样的功能:

Ptr<FeatureDetector> fast = FastFeatureDetector::create(40); 

关于c++ - 特征检测器不在 OpenCV 3.0.0 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39887357/

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