How To Import External Library To OpenCV
I would like to extract features of images using opencv 3.0 with Visual Studio 2013.
My code:
#include <stdio.h>
#include <iostream>
#include "opencv2\core.hpp"
#include "opencv2\features2d.hpp"
#include <opencv2\xfeatures2d.hpp>
#include <opencv2\highgui.hpp>
using namespace cv;
using namespace cv::xfeatures2d;
void readme();
/** @function main */
int main(int argc, char** argv)
{
if (argc != 3)
{
readme(); return -1;
}
Mat img_1 = imread(argv[1], IMREAD_GRAYSCALE);
Mat img_2 = imread(argv[2], IMREAD_GRAYSCALE);
if (!img_1.data || !img_2.data)
{
std::cout << " --(!) Error reading images " << std::endl; return -1;
}
//-- Step 1: Detect the keypoints using SURF Detector
int minHessian = 400;
Ptr<SURF> detector = SURF::create(minHessian);
std::vector<KeyPoint> keypoints_1, keypoints_2;
detector->detect(img_1, keypoints_1);
detector->detect(img_2, keypoints_2);
//-- Draw keypoints
Mat img_keypoints_1; Mat img_keypoints_2;
drawKeypoints(img_1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
drawKeypoints(img_2, keypoints_2, img_keypoints_2, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
//-- Show detected (drawn) keypoints
imshow("Keypoints 1", img_keypoints_1);
imshow("Keypoints 2", img_keypoints_2);
waitKey(0);
return 0;
}
/** @function readme */
void readme()
{
std::cout << " Usage: ./SURF_detector <img1> <img2>" << std::endl;
}
Error:
Cannot open include file: 'opencv2\xfeatures2d.hpp': No such file or directory
In C:\OpenCV3.0.0\opencv\build\include\opencv2
directory, there is no xfeatures2d.hpp file. Thus, I should import this library externally. How to fix it?
The module xfeatures2d is in the OpenCV contrib repository.
I kept track of the instructions in that link. I applied those commands:
cd C:\OpenCV3.0.0\opencv\build cmake -DOPENCV_EXTRA_MODULES_PATH=C:\opencv_contrib-master\modules C:\OpenCV3.0.0\opencv\sources
It creates an CMakeError.txt file including lots of errors.@openman, - it's probably a good idea, to start a new question now, and to add the cmake output there.
@openman Compiling opencv is a tedious business, you need to set a lot of options correctly depending on your system, so don't expect is to work out of the box.