文章目录
- 代码部分
-
int main ( )
取消参数传入 -
if (argc != 3) {
cout << “usage: feature_extraction img1 img2” << endl;
return 1;
}
删除此段代码,因为程序不需要从外面传入图片了 -
[ Mat img_1 = imread("/home/slambook2/ch7/1.png", CV_LOAD_IMAGE_COLOR);
直接将图片地址写入,将图片变换为图像矩阵。CV_LOAD_IMAGE_COLOR保留图片的彩色信息 -
完整代码
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <chrono>
using namespace std;
using namespace cv;
int main ( )
{
//-- 读取图像,assert检查图像是否为空,assert表达式为0时报错
Mat img_1 = imread("/home/automobile/wcm/slambook2/ch7/1.png", CV_LOAD_IMAGE_COLOR);
Mat img_2 = imread("/home/automobile/wcm/slambook2/ch7/2.png", CV_LOAD_IMAGE_COLOR);
assert(img_1.data != nullptr && img_2.data != nullptr);
//-- 初始化
std::vector<KeyPoint> keypoints_1, keypoints_2;
Mat descriptors_1, descriptors_2;
Ptr<FeatureDetector> detector = ORB::create();
Ptr<DescriptorExtractor> descriptor = ORB::create();
Ptr&l