This is mask.
This is output.
We can see features is extracted only white rect.
This is example source code.
/////
#include < stdio.h > #include < opencv2\opencv.hpp > #include < opencv2\features2d\features2d.hpp > #include < opencv2\nonfree\features2d.hpp > #ifdef _DEBUG #pragma comment(lib, "opencv_core246d.lib") //#pragma comment(lib, "opencv_imgproc246d.lib") //MAT processing //#pragma comment(lib, "opencv_objdetect246d.lib") //#pragma comment(lib, "opencv_gpu246d.lib") #pragma comment(lib, "opencv_features2d246d.lib") #pragma comment(lib, "opencv_highgui246d.lib") //#pragma comment(lib, "opencv_ml246d.lib") //#pragma comment(lib, "opencv_stitching246d.lib"); #pragma comment(lib, "opencv_nonfree246d.lib"); #else #pragma comment(lib, "opencv_core246.lib") //#pragma comment(lib, "opencv_imgproc246.lib") //#pragma comment(lib, "opencv_objdetect246.lib") //#pragma comment(lib, "opencv_gpu246.lib") #pragma comment(lib, "opencv_features2d246.lib") #pragma comment(lib, "opencv_highgui246.lib") //#pragma comment(lib, "opencv_ml246.lib") //#pragma comment(lib, "opencv_stitching246.lib"); #pragma comment(lib, "opencv_nonfree246.lib"); #endif using namespace cv; using namespace std; void main() { //SURF_GPU example source code Mat inImg,outImg; vector< cv::KeyPoint > src_keypoints; vector< float > src_descriptors; //image load inImg = imread("ship.png",0); //FeatureFinder SurfFeatureDetector FeatureFinder(400); //make mask Mat mask = Mat::zeros(inImg.size(), CV_8U); Mat roi(mask, Rect(400,400,400,400) ); roi = Scalar(255, 255, 255); /* //The mode to set multiple masks vector< Rect > mask_rect; mask_rect.push_back(Rect(0,0,200,200) ); mask_rect.push_back(Rect(200,200,200,200) ); mask_rect.push_back(Rect(400,400,200,200) ); mask_rect.push_back(Rect(600,600,200,200) ); Mat mask = Mat::zeros(inImg.size(), CV_8U); for(int i=0; i< mask_rect.size(); ++i) { Mat roi(mask, mask_rect[i] ); roi = Scalar(255, 255, 255); } */ //Feature Extraction FeatureFinder.detect( inImg, src_keypoints , mask); //Features Draw drawKeypoints( inImg, src_keypoints, outImg, Scalar::all(-1), DrawMatchesFlags::DRAW_RICH_KEYPOINTS ); imshow("Show", outImg); imshow("mask", mask); imshow("roi", roi); waitKey(0); //save to file imwrite("output.jpg", outImg); imwrite("mask.jpg", mask); imwrite("roi.jpg", roi); }/////
If you want to set one more masks, see the comment section.
This source code is advance on this page(http://feelmare.blogspot.kr/2013/12/surffeaturedetector-exmaple-source-code.html).
No comments:
Post a Comment