diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt
index ea7baea0f03707fbc6f6f31520490e5cf2c319ee..c614b93723c22f70d73f529ca4f61ea392a748ff 100644
--- a/src/examples/CMakeLists.txt
+++ b/src/examples/CMakeLists.txt
@@ -113,14 +113,12 @@ IF(OpenCV_FOUND)
     ENDIF(Ceres_FOUND)
 
     # Testing opencv matching and fundamental matrix with ransac
-#    ADD_EXECUTABLE(test_opencv test_opencv.cpp)
-#    TARGET_LINK_LIBRARIES(test_opencv ${PROJECT_NAME})
+    ADD_EXECUTABLE(test_opencv test_opencv.cpp)
+    TARGET_LINK_LIBRARIES(test_opencv ${PROJECT_NAME})
 
     # Testing OpenCV functions for projection of points
-#    ADD_EXECUTABLE(test_projection_points test_projection_points.cpp)
-#    TARGET_LINK_LIBRARIES(test_projection_points ${PROJECT_NAME})
-
-
+    ADD_EXECUTABLE(test_projection_points test_projection_points.cpp)
+    TARGET_LINK_LIBRARIES(test_projection_points ${PROJECT_NAME})
 
     # Constraint test
     ADD_EXECUTABLE(test_constraint_AHP test_constraint_AHP.cpp)
diff --git a/src/examples/test_opencv.cpp b/src/examples/test_opencv.cpp
index b1f6b60d3a275cd38d87bd2bebf1ecd6c736b395..99cfa4046c0ab0e57f05620f55805410506afc93 100644
--- a/src/examples/test_opencv.cpp
+++ b/src/examples/test_opencv.cpp
@@ -30,6 +30,7 @@ int main(int argc, char** argv)
 
     // parsing input params
     const char * filename;
+    cv::VideoCapture capture;
     if (argc < 2)
     {
         std::cout << "Please use\n\t./test_opencv <arg> "
@@ -41,16 +42,17 @@ int main(int argc, char** argv)
     else if (std::string(argv[1]) == "0")
     {
         filename = "0"; // camera
+        capture.open(0);
         std::cout << "Input stream from camera " << std::endl;
     }
     else
     {
         filename = argv[1]; // provided through argument
+        capture.open(filename);
         std::cout << "Input video file: " << filename << std::endl;
     }
 
     // Open input stream
-    cv::VideoCapture capture(filename);
     if (!capture.isOpened())  // check if we succeeded
         std::cout << "failed" << std::endl;
     else
@@ -71,12 +73,8 @@ int main(int argc, char** argv)
     cv::moveWindow("Feature tracker", 0, 0);
 
     // set image processors
-//    cv::BRISK detector(30, 0, 1.0);
-//    cv::BRISK descriptor(30, 0, 1.0);
-    cv::BFMatcher matcher(cv::NORM_HAMMING2);
-    cv::ORB detector(1000,1.2,8,16,0,3,0,31);
-    cv::ORB descriptor(1000,1.2,8,16,0,3,0,31);
-//    cv::FlannBasedMatcher matcher;
+    cv::Ptr<cv::FeatureDetector> detector_descriptor_ptr = cv::ORB::create(1000,2,8,16,0,3,0,31);
+    cv::Ptr<cv::DescriptorMatcher> matcher_ptr = cv::DescriptorMatcher::create("BruteForce-Hamming(2)");
 
     // declare all variables
     std::vector<cv::KeyPoint> keypoints_1, keypoints_2;
@@ -88,7 +86,6 @@ int main(int argc, char** argv)
     std::vector<cv::Point2f> inliers_1, inliers_2;
     cv::Mat img_matches;
     cv::Mat img_scaled;
-//    double scale = 1;//0.875;
 
     unsigned int f = 0;
     capture >> image_buffer[f % buffer_size];
@@ -116,10 +113,10 @@ int main(int argc, char** argv)
                 img_2 = image_buffer[(f - buffer_size + 1) % buffer_size];
 
                 // detect and describe in both images
-                detector.detect(img_1, keypoints_1);
-                detector.detect(img_2, keypoints_2);
-                descriptor.compute(img_1, keypoints_1, descriptors_1);
-                descriptor.compute(img_2, keypoints_2, descriptors_2);
+                detector_descriptor_ptr->detect(img_1, keypoints_1);
+                detector_descriptor_ptr->detect(img_2, keypoints_2);
+                detector_descriptor_ptr->compute(img_1, keypoints_1, descriptors_1);
+                detector_descriptor_ptr->compute(img_2, keypoints_2, descriptors_2);
 
                 unsigned int max_dist = 0;
                 unsigned int min_dist = 512;
@@ -128,7 +125,7 @@ int main(int argc, char** argv)
                 {
                     // match (try flann later)
                     //-- Step 3: Matching descriptor vectors using FLANN matcher
-                    matcher.match(descriptors_1, descriptors_2, matches);
+                    matcher_ptr->match(descriptors_1, descriptors_2, matches);
 
                     //-- Quick calculation of max and min distances between keypoints
                     for (int i = 0; i < descriptors_1.rows; i++)
@@ -180,10 +177,7 @@ int main(int argc, char** argv)
                 // Draw RANSAC inliers
                 cv::drawMatches(img_1, keypoints_1, img_2, keypoints_2, inlier_matches, img_matches,
                                 cv::Scalar::all(-1), cv::Scalar::all(-1), std::vector<char>(), 0); //cv::DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );
-                //-- Show detected matches
-//                resize(img_matches, img_scaled, cv::Size(), scale, scale, cv::INTER_NEAREST);
-//                imshow("Feature tracker", img_1);
-//                imshow("Feature tracker", img_2);
+                // Show detected matches
                 imshow("Feature tracker", img_matches);
 
                 // pause every X images and wait for key