Repository for OpenCV's extra modules
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1.7 KiB

Classify

Goal

In this tutorial you will learn how to

  • How to extract feature from an image
  • How to extract features from images under a given root path
  • How to make a prediction using reference images and target image

Code

@include cnn_3dobj/samples/classify.cpp

Explanation

Here is the general structure of the program:

  • Initialize a net work with Device. @code{.cpp} cv::cnn_3dobj::descriptorExtractor descriptor(device); @endcode

  • Load net with the caffe trained net work parameter and structure. @code{.cpp} if (strcmp(mean_file.c_str(), "no") == 0) descriptor.loadNet(network_forIMG, caffemodel); else descriptor.loadNet(network_forIMG, caffemodel, mean_file); @endcode

  • List the file names under a given path. @code{.cpp} listDir(src_dir.c_str(), name_gallery, false); for (unsigned int i = 0; i < name_gallery.size(); i++) { name_gallery[i] = src_dir + name_gallery[i]; } @endcode

  • Extract feature from a set of images. @code{.cpp} descriptor.extract(img_gallery, feature_reference, feature_blob); @endcode

  • Initialize a matcher which using L2 distance. @code{.cpp} cv::BFMatcher matcher(NORM_L2); std::vector<std::vectorcv::DMatch > matches; @endcode

  • Have a KNN match on the target and reference images. @code{.cpp} matcher.knnMatch(feature_test, feature_reference, matches, num_candidate); @endcode

  • Print features of the reference images. @code{.cpp}std::cout << std::endl << "---------- Features of target image: " << target_img << "----------" << endl << feature_test << std::endl; @endcode Results