#include
#include
#include
#include
#include
using namespace cv;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Mat image;
image = imread("1.jpg");
// 存储为关键点
std::vector<KeyPoint> keyPoints;
// 定义特征检测
FastFeatureDetector fast(40); // 检测的阈值为40 “cv::FastFeatureDetector”: 不能实例化抽象类
// 特征点检测
fast.detect(image,keyPoints);
drawKeypoints(image, keyPoints, image, Scalar::all(255), DrawMatchesFlags::DRAW_OVER_OUTIMG);
imshow("FAST feature", image);
waitKey(0);
return a.exec();
}
error: C2259: “cv::FastFeatureDetector”: 不能实例化抽象类
error: C2664: “cv::FastFeatureDetector::FastFeatureDetector(cv::FastFeatureDetector &&)”: 无法将参数 1 从“int”转换为“const cv::FastFeatureDetector &”
http://docs.opencv.org/3.0-beta/doc/user_guide/ug_features2d.html
试了是楼上的还是不行
去google了一下
把
FastFeatureDetector fast(40);
fast.detect(image,keypoints);
改为:
Ptr<FeatureDetector> fast=FastFeatureDetector::create(40);
fast->detect(image, keypoints);
http://blog.csdn.net/traumland/article/details/51045244
版本原因, 书上下面这一条始终是使用不了, 创建方法变了
QT提示 error: no matching function for call to 'cv::FastFeatureDetector::FastFeatureDetector(int)'
cv::FastFeatureDetector fastDet(80);
^
将 FastFeatureDetector fast(40);这一句修改为:
cv::Ptrcv::FeatureDetector fast =
cv::FastFeatureDetector::create(40, true, cv::FastFeatureDetector::TYPE_9_16);
这一句即可使用,具体的参考上一楼的引用博客。