HomographySharp 3.2.1
.NET 5.0
.NET Core 3.1
.NET Standard 2.0
Install-Package HomographySharp -Version 3.2.1
dotnet add package HomographySharp --version 3.2.1
<PackageReference Include="HomographySharp" Version="3.2.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add HomographySharp --version 3.2.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: HomographySharp, 3.2.1"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install HomographySharp as a Cake Addin
#addin nuget:?package=HomographySharp&version=3.2.1
// Install HomographySharp as a Cake Tool
#tool nuget:?package=HomographySharp&version=3.2.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
HomographySharp
HomographySharp is a C# class library for finding and using homography matrix.
Install
NuGet: HomographySharp
Package Manager
PM > Install-Package HomographySharp
.NET CLI
dotnet add package HomographySharp
Usage
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();
or
//HomographySharp.Point2<T>
var srcArray = new Point2<double>[4]; // or Point2<float>
var dstArray = new Point2<double>[4];
srcArray[0] = new Point2<double>(10, 10);
srcArray[1] = new Point2<double>(100, 10);
srcArray[2] = new Point2<double>(100, 150);
srcArray[3] = new Point2<double>(10, 150);
dstArray[0] = new Point2<double>(11, 11);
dstArray[1] = new Point2<double>(500, 11);
dstArray[2] = new Point2<double>(500, 200);
dstArray[3] = 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());
Visualization App
Use visualization app if you want to see how points are transformed by a homography matrix.
Dependent Library
- Math.NET Numerics
- Copyright (c) 2002-2022 Math.NET
- Released under the MIT/X11 License
Product | Versions |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows |
.NET Core | netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard2.0 netstandard2.1 |
.NET Framework | net461 net462 net463 net47 net471 net472 net48 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen40 tizen60 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
-
.NETCoreApp 3.1
- MathNet.Numerics (>= 5.0.0)
-
.NETStandard 2.0
- MathNet.Numerics (>= 5.0.0)
- System.Memory (>= 4.5.5)
- System.Numerics.Vectors (>= 4.5.0)
- System.Text.Json (>= 6.0.4)
-
.NETStandard 2.1
- MathNet.Numerics (>= 5.0.0)
- System.Text.Json (>= 6.0.4)
-
net5.0
- MathNet.Numerics (>= 5.0.0)
-
net6.0
- MathNet.Numerics (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
3.2.1 | 89 | 6/4/2022 |
3.2.0 | 248 | 4/8/2022 |
3.1.1 | 1,310 | 11/14/2021 |
3.1.0 | 1,198 | 11/13/2021 |
3.0.1 | 348 | 5/20/2021 |
2.1.1 | 196 | 3/3/2021 |
2.0.1 | 197 | 1/14/2021 |
2.0.0 | 304 | 10/19/2020 |
1.5.0 | 904 | 11/6/2019 |
1.4.0 | 326 | 9/21/2019 |
1.3.6 | 339 | 9/7/2019 |
1.3.2 | 392 | 6/20/2019 |
1.3.0 | 410 | 6/19/2019 |
1.2.4 | 406 | 6/16/2019 |
1.2.0 | 405 | 6/11/2019 |
1.1.2 | 394 | 5/12/2019 |
1.1.1 | 489 | 2/3/2019 |
1.1.0 | 507 | 2/1/2019 |
1.0.3 | 556 | 1/12/2019 |
1.0.2 | 542 | 1/10/2019 |
1.0.0 | 567 | 1/9/2019 |