我想在C#中使用sift算法。
我找到了这个网站http://user.cs.tu-berlin.de/~nowozin/libsift/,但是我很困惑,因为没有主程序或项目文件。我不知道如何在普通的C#控制台/窗口应用程序中使用它,以及GK#的规则是什么。
有人能给我一些有用的提示吗?或者有人知道另一个C#实现的方法吗?
我想在C#中使用sift算法。
我找到了这个网站http://user.cs.tu-berlin.de/~nowozin/libsift/,但是我很困惑,因为没有主程序或项目文件。我不知道如何在普通的C#控制台/窗口应用程序中使用它,以及GK#的规则是什么。
有人能给我一些有用的提示吗?或者有人知道另一个C#实现的方法吗?
没有主程序,因为它显然是一个类库。要么使用您喜欢的IDE创建项目并将源文件添加到其中,要么打开终端窗口并使用包含的Makefile构建库。
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;
}
using Emgu.CV;
using Emgu.CV.Features2D;
using Emgu.CV.Util;
using Emgu.CV.Structure;
using System.Drawing;
https://sites.google.com/site/btabibian/projects/3d-reconstruction/code
你可以在这里找到一个实现,其中有一个 Sift 类。它基于 EmguCV 库。 sift_features(名称非常违反 C# 约定)会返回一个 Feature 对象的列表,其中包含一个 double[] 描述符成员。命名规则遵循UBC发布的原始C代码,因为这只是一个测试,以查看算法的性能。如果您需要任何帮助,我将非常乐意提供。