Αγορά Πολιτών

Τρόπος Συμμετοχής

Χορηγίες

Πολίτες στην Αγορά

Έχουμε 489 επισκέπτες συνδεδεμένους

Επικοινωνία

Γερμανία 004917667046073 (SMS)

7/3/2017, 20:00

Images of German w & s

 

Crimes against Humanity

 

"Chimera" - "Bellerophon"

 

Legal Notice 87

 

Βδέλλες, αποικιοκρατικές

 

Being a German

 

Legal Notice 84

 

Dirty colonial methods

 

Georgi Markov, BG - KGB

 

Samples of Barbarity

 

Ελλάδα - αποκόλληση

 

Έλληνες, στο έλεος...

 

Harvester's log 16/3/17

 

 

Legal Notice 66

 

Execrable

 

Legal Notice 62

 

  

My story

 

  

Aggression?

 

  

Η Εστία μου

 

  

Why so untidy?

 

  

Αποικιοκρατία

 

  

Εξόντωση Ελλήνων αντιφρονούντων;

 

  

Ζήτημα εμπιστοσύνης

 

  

Μεθοδικότητα

 

  

Ανοικτή Επιστολή πρέσβη ΗΠΑ

Αφορμή, U2RIT vs Ελλάδα;

Βιοηθική

A request to U2RIT

Colonial aggression - 2

Open Letter to UN S.G.

Open Letter to p.C. & p. O.

Δήλωση πρόθεσης επαναπατρισμού

 

Ο "εφιάλτης" της Νυρεμβέργης

Συλλογή Φωτογραφιών

Αίτημα προστασίας, προς Ιταλία

Chroma key, background removal

Science and Ethics

Να συμβάλει και η U2RIT

Θα ξαναφτιάξουν πολλές φορές Άουσβιτς και Zyclon B

 

Split-Screen effect

Η Ζωή είναι Ωραία.

Βόρεια Κορέα

Λευτεριά στους Έλληνες, εξανα- γκαστικά "Εξαφανισμένους"

 

Μυστικές δίκες;

Trustworthiness

Πολιτισμό, ή, απληστία;

Ακραία Στυγνότητα

Η Τέχνη της Επιβίωσης

Political Asylum 3

Επιστροφή στις ρίζες

The Human Cost of Torture

An urgent appeal for solidarity

More obvious than the Sun

Western "culture"

Political Asylum

Έννομη Προστασία

Μια μήνυση που εγείρει ερωτηματικά

 

 

 

Honor your father...

Noise

Creative Greeks

A pair of Dictatorships

Fast Approximate Nearest Neighbor Search Library PDF Εκτύπωση E-mail
Αξιολόγηση Χρήστη: / 0
ΧείριστοΆριστο 
Συνεννόηση για Δράση - Απόψεις
Συντάχθηκε απο τον/την Χρήστος Μπούμπουλης (Christos Boumpoulis)   
Κυριακή, 21 Μάιος 2017 18:38

Object Detection and Tracking with OpenCV 3.2

https://www.youtube.com/watch?v=6BlwX6LiJYI

 

 

Fast Approximate Nearest Neighbor Search Library

 

Using the FlannBasedMatcher interface in order to perform a quick and efficient matching by using the FLANN (Fast Approximate Nearest Neighbor Search Library).

 

This tutorial code’s is shown lines below.

/**

* @file SURF_FlannMatcher

* @brief SURF detector + descriptor + FLANN Matcher

* @author A. Huaman

*/

#include "opencv2/opencv_modules.hpp"

#include <stdio.h>

#ifndef HAVE_OPENCV_NONFREE

int main(int, char**)

{

printf("The sample requires nonfree module that is not available in your OpenCV distribution.\n");

return -1;

}

#else

# include "opencv2/core/core.hpp"

# include "opencv2/features2d/features2d.hpp"

# include "opencv2/highgui/highgui.hpp"

# include "opencv2/nonfree/features2d.hpp"

using namespace cv;

void readme();

/**

* @function main

* @brief Main function

*/

int main( int argc, char** argv )

{

if( argc != 3 )

{ readme(); return -1; }

Mat img_1 = imread( argv[1], CV_LOAD_IMAGE_GRAYSCALE );

Mat img_2 = imread( argv[2], CV_LOAD_IMAGE_GRAYSCALE );

if( !img_1.data || !img_2.data )

{ printf(" --(!) Error reading images \n"); return -1; }

//-- Step 1: Detect the keypoints using SURF Detector

int minHessian = 400;

SurfFeatureDetector detector( minHessian );

std::vector<KeyPoint> keypoints_1, keypoints_2;

detector.detect( img_1, keypoints_1 );

detector.detect( img_2, keypoints_2 );

//-- Step 2: Calculate descriptors (feature vectors)

SurfDescriptorExtractor extractor;

Mat descriptors_1, descriptors_2;

extractor.compute( img_1, keypoints_1, descriptors_1 );

extractor.compute( img_2, keypoints_2, descriptors_2 );

//-- Step 3: Matching descriptor vectors using FLANN matcher

FlannBasedMatcher matcher;

std::vector< DMatch > matches;

matcher.match( descriptors_1, descriptors_2, matches );

double max_dist = 0; double min_dist = 100;

//-- Quick calculation of max and min distances between keypoints

for( int i = 0; i < descriptors_1.rows; i++ )

{ double dist = matches[i].distance;

if( dist < min_dist ) min_dist = dist;

if( dist > max_dist ) max_dist = dist;

}

printf("-- Max dist : %f \n", max_dist );

printf("-- Min dist : %f \n", min_dist );

//-- Draw only "good" matches (i.e. whose distance is less than 2*min_dist,

//-- or a small arbitary value ( 0.02 ) in the event that min_dist is very

//-- small)

//-- PS.- radiusMatch can also be used here.

std::vector< DMatch > good_matches;

for( int i = 0; i < descriptors_1.rows; i++ )

{ if( matches[i].distance <= max(2*min_dist, 0.02) )

{ good_matches.push_back( matches[i]); }

}

//-- Draw only "good" matches

Mat img_matches;

drawMatches( img_1, keypoints_1, img_2, keypoints_2,

good_matches, img_matches, Scalar::all(-1), Scalar::all(-1),

vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS );

//-- Show detected matches

imshow( "Good Matches", img_matches );

for( int i = 0; i < (int)good_matches.size(); i++ )

{ printf( "-- Good Match [%d] Keypoint 1: %d -- Keypoint 2: %d \n", i, good_matches[i].queryIdx, good_matches[i].trainIdx waitKey(0);

return 0;

}

/**

* @function readme

*/

void readme()

{ printf(" Usage: ./SURF_FlannMatcher <img1> <img2>\n"); }

#endif