dotnet add package HomographySharp --version 3.3.0
NuGet\Install-Package HomographySharp -Version 3.3.0
<PackageReference Include="HomographySharp" Version="3.3.0" />
paket add HomographySharp --version 3.3.0
#r "nuget: HomographySharp, 3.3.0"
// Install HomographySharp as a Cake Addin #addin nuget:?package=HomographySharp&version=3.3.0 // Install HomographySharp as a Cake Tool #tool nuget:?package=HomographySharp&version=3.3.0
HomographySharp is a C# class library for finding and using homography matrix.
PM > Install-Package HomographySharp
dotnet add package HomographySharp
Find homography matrix
//System.Numerics.Vector2 var srcList = new List<Vector2>(4); var dstList = new List<Vector2>(4); srcList.Add(new Vector2(-152, 394)); srcList.Add(new Vector2(218, 521)); srcList.Add(new Vector2(223, -331)); srcList.Add(new Vector2(-163, -219)); dstList.Add(new Vector2(-666, 431)); dstList.Add(new Vector2(500, 300)); dstList.Add(new Vector2(480, -308)); dstList.Add(new Vector2(-580, -280)); // args type: ReadOnlySpan, IReadOnlyList, T HomographyMatrix<float> homo = Homography.Find(srcList, dstList); Point2<float> result = homo.Translate(-152, 394); Assert.IsTrue(Math.Abs(result.X - -666) < 0.001); //true Assert.IsTrue(Math.Abs(result.Y - 431) < 0.001); //true // System.Drawing.PointF PointF pointf = result.ToPointF(); // System.Numerics.Vector2 Vector2 vector2 = result.ToVector2(); // MathNet.Numerics.LinearAlgebra.Matrix<T> Matrix<float> mat = homo.ToMathNetMatrix();
//HomographySharp.Point2<T> var srcArray = new Point2<double>; // or Point2<float> var dstArray = new Point2<double>; srcArray = new Point2<double>(10, 10); srcArray = new Point2<double>(100, 10); srcArray = new Point2<double>(100, 150); srcArray = new Point2<double>(10, 150); dstArray = new Point2<double>(11, 11); dstArray = new Point2<double>(500, 11); dstArray = new Point2<double>(500, 200); dstArray = new Point2<double>(11, 200); HomographyMatrix<double> homo = Homography.Find(srcList.AsSpan(), dstList.AsSpan()); Point2<double> result = homo.Translate(100, 10); Assert.IsTrue(Math.Abs(result.X - 500) < 0.001); //true Assert.IsTrue(Math.Abs(result.Y - 11) < 0.001); //true
Json serialize support
using System.Text.Json; var homoMat = Homography.Find(srcList, dstList); string json = JsonSerializer.Serialize(homo); var homoMat2 = JsonSerializer.Deserialize<HomographyMatrix<double>>(json);
Create homography matrix from raw array
HomographyMatrix<double> homoMat = ...; var newMat = Homography.Create(homoMat.ElementsAsSpan());
Use visualization app if you want to see how points are transformed by a homography matrix.
|Product||Versions Compatible and additional computed target framework versions.|
|.NET||net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed.|
|.NET Core||netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed.|
|.NET Standard||netstandard2.0 is compatible. netstandard2.1 was computed.|
|.NET Framework||net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed.|
|MonoAndroid||monoandroid was computed.|
|MonoMac||monomac was computed.|
|MonoTouch||monotouch was computed.|
|Tizen||tizen40 was computed. tizen60 was computed.|
|Xamarin.iOS||xamarinios was computed.|
|Xamarin.Mac||xamarinmac was computed.|
|Xamarin.TVOS||xamarintvos was computed.|
|Xamarin.WatchOS||xamarinwatchos was computed.|
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.