diff --git a/console_app/CMakeLists.txt b/console_app/CMakeLists.txt deleted file mode 100644 index 9a9284c3..00000000 --- a/console_app/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ - - -SET(SRC_FILES - main.cpp -) - -SET(INCLUDE_DIRS - ${OpenCV_INCLUDE_DIRS} -) - -SET(LIBRARIES - ${OpenCV_LIBS} -) - -# Make sure the compiler can find include files from our library. -INCLUDE_DIRECTORIES(${INCLUDE_DIRS}) - -# Add binary called "console" that is built from the source file "main.cpp". -# The extension is automatically found. -ADD_EXECUTABLE(console ${SRC_FILES}) -TARGET_LINK_LIBRARIES(console ${LIBRARIES}) - -SET_TARGET_PROPERTIES( console - PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-console) - -INSTALL(TARGETS console - RUNTIME DESTINATION bin COMPONENT runtime - BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) diff --git a/console_app/main.cpp b/console_app/main.cpp deleted file mode 100644 index 1a6c808b..00000000 --- a/console_app/main.cpp +++ /dev/null @@ -1,164 +0,0 @@ - -#include -#include - -// OpenCV stuff -#include -#include -#include -#include -#include // for homography - -void showUsage() -{ - printf( - "\n" - "Return similarity between two images (the number of similar features between the images).\n" - "Usage :\n" - " ./find_object-console [option] object.png scene.png\n" - "Options: \n" - " -inliers return inliers percentage : inliers / (inliers + outliers)\n" - " -quiet don't show messages\n"); - - exit(-1); -} - -enum {mTotal, mInliers}; - -int main(int argc, char * argv[]) -{ - bool quiet = false; - int method = mTotal; //total matches - if(argc<3) - { - printf("Two images required!\n"); - showUsage(); - } - else if(argc>3) - { - for(int i=1; i objectKeypoints; - std::vector sceneKeypoints; - cv::Mat objectDescriptors; - cv::Mat sceneDescriptors; - - //////////////////////////// - // EXTRACT KEYPOINTS - //////////////////////////// - cv::SIFT sift; - sift.detect(objectImg, objectKeypoints); - sift.detect(sceneImg, sceneKeypoints); - - //////////////////////////// - // EXTRACT DESCRIPTORS - //////////////////////////// - sift.compute(objectImg, objectKeypoints, objectDescriptors); - sift.compute(sceneImg, sceneKeypoints, sceneDescriptors); - - //////////////////////////// - // NEAREST NEIGHBOR MATCHING USING FLANN LIBRARY (included in OpenCV) - //////////////////////////// - cv::Mat results; - cv::Mat dists; - std::vector > matches; - int k=2; // find the 2 nearest neighbors - - // Create Flann KDTree index - cv::flann::Index flannIndex(sceneDescriptors, cv::flann::KDTreeIndexParams(), cvflann::FLANN_DIST_EUCLIDEAN); - results = cv::Mat(objectDescriptors.rows, k, CV_32SC1); // Results index - dists = cv::Mat(objectDescriptors.rows, k, CV_32FC1); // Distance results are CV_32FC1 - - // search (nearest neighbor) - flannIndex.knnSearch(objectDescriptors, results, dists, k, cv::flann::SearchParams() ); - - //////////////////////////// - // PROCESS NEAREST NEIGHBOR RESULTS - //////////////////////////// - - // Find correspondences by NNDR (Nearest Neighbor Distance Ratio) - float nndrRatio = 0.6f; - std::vector mpts_1, mpts_2; // Used for homography - std::vector indexes_1, indexes_2; // Used for homography - std::vector outlier_mask; // Used for homography - // Check if this descriptor matches with those of the objects - - for(int i=0; i(i,0) <= nndrRatio * dists.at(i,1)) - { - mpts_1.push_back(objectKeypoints.at(i).pt); - indexes_1.push_back(i); - - mpts_2.push_back(sceneKeypoints.at(results.at(i,0)).pt); - indexes_2.push_back(results.at(i,0)); - } - } - - if(method == mInliers) - { - // FIND HOMOGRAPHY - unsigned int minInliers = 8; - if(mpts_1.size() >= minInliers) - { - cv::Mat H = findHomography(mpts_1, - mpts_2, - cv::RANSAC, - 1.0, - outlier_mask); - int inliers=0, outliers=0; - for(unsigned int k=0; k