Domanda

Voglio usare l'esecuzione Sift in C #.

Ho trovato questo sito http: //user.cs.tu-berlin .de / ~ nowozin / libsift / ma io sono confuso che non esiste un file di programma o progetto principale. Non riuscivo a capire come posso usarlo nel normale applicazione console C # / finestra e ciò che è stato di GK # è.

Potrebbe qualcuno darmi alcuni consigli utili, o qualcuno sa un'altra implementazione in C #?

È stato utile?

Soluzione

La convenzione di denominazione segue il codice originale C pubblicare da UBC, perché era solo un test per vedere come i esegue algoritmo. Sarò felice di aiuto se avete bisogno.

Altri suggerimenti

Non v'è alcun programma principale perché è obvisouly una libreria di classi. Creare un progetto utilizzando il vostro IDE preferito e aggiungere i file di origine ad esso, o aprire una finestra di terminale e costruire la libreria utilizzando il Makefile incluso.

https://sites.google.com/site/btabibian/ progetti / 3d-ricostruzione / code

È possibile trovare un'implementazione qui che ha una classe Sift. La sua base di biblioteca EmguCV. I sift_features (nome è molto contro le convenzioni C #) si ritorna una lista di oggetti Caratteristica che ha un letto membro descrittore [].

Questo codice è molto simile a Surf algoritmo http://www.emgu.com/ wiki / index.php / SURF_feature_detector_in_CSharp .

    public Image<Bgr, Byte> PutFeaturesOnImage(string file)
    {
        Image<Gray, Byte> modelImage = new Image<Gray, byte>(file);
        SIFTDetector siftCPU = new SIFTDetector();
        VectorOfKeyPoint modelKeyPoints = new VectorOfKeyPoint();
        MKeyPoint[] mKeyPoints = siftCPU.DetectKeyPoints(modelImage, null);
        modelKeyPoints.Push(mKeyPoints);
        ImageFeature<float>[] reulst = siftCPU.ComputeDescriptors(modelImage, null, mKeyPoints);
        Image<Bgr, Byte> image = Features2DToolbox.DrawKeypoints(modelImage, modelKeyPoints, new Bgr(Color.Red), Features2DToolbox.KeypointDrawType.DEFAULT);
        return image;
    }

Ricordate di aggiungere librarys:

using Emgu.CV;
using Emgu.CV.Features2D;
using Emgu.CV.Util;
using Emgu.CV.Structure;
using System.Drawing;

ho confrontato algoritmi EmguCv e OpenCV SIFT. I risultati sono gli stessi. In entrambi gli esempi sono esattamente lo stesso numero di funzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top