Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sn4k3/UVtools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'UVtools.Core/Extensions/EmguExtensions.cs')
-rw-r--r--UVtools.Core/Extensions/EmguExtensions.cs17
1 files changed, 9 insertions, 8 deletions
diff --git a/UVtools.Core/Extensions/EmguExtensions.cs b/UVtools.Core/Extensions/EmguExtensions.cs
index a96a50f..735c41a 100644
--- a/UVtools.Core/Extensions/EmguExtensions.cs
+++ b/UVtools.Core/Extensions/EmguExtensions.cs
@@ -27,11 +27,10 @@ namespace UVtools.Core.Extensions
return new Span<T>(mat.DataPointer.ToPointer(), mat.GetLength());
}
- public static Span<T> GetPixelRowSpan<T>(this Mat mat, int y)
+ public static unsafe Span<T> GetPixelRowSpan<T>(this Mat mat, int y)
{
- int offset = y * mat.Step;
- //IntPtr ptr = IntPtr.Add(mat.DataPointer, offset);
- return mat.GetPixelSpan<T>().Slice(offset, mat.Step);
+ return new Span<T>(IntPtr.Add(mat.DataPointer, y * mat.Step).ToPointer(), mat.Step);
+ //return mat.GetPixelSpan<T>().Slice(offset, mat.Step);
}
/// <summary>
@@ -44,17 +43,19 @@ namespace UVtools.Core.Extensions
/// <param name="xTrans">X translation</param>
/// <param name="yTrans">Y translation</param>
/// <param name="interpolation">Interpolation mode</param>
- public static void ScaleFromCenter(this Mat src, double xScale, double yScale, double xTrans = 0, double yTrans = 0, Inter interpolation = Inter.Linear)
+ public static void TransformFromCenter(this Mat src, double xScale, double yScale, double xTrans = 0, double yTrans = 0, Inter interpolation = Inter.Linear)
{
//var dst = new Mat(src.Size, src.Depth, src.NumberOfChannels);
- var translateTransform = new Matrix<double>(2, 3)
+ using (var translateTransform = new Matrix<double>(2, 3)
{
[0, 0] = xScale, // xScale
[1, 1] = yScale, // yScale
[0, 2] = xTrans + (src.Width - src.Width * xScale) / 2.0, //x translation + compensation of x scaling
[1, 2] = yTrans + (src.Height - src.Height * yScale) / 2.0 // y translation + compensation of y scaling
- };
- CvInvoke.WarpAffine(src, src, translateTransform, src.Size, interpolation);
+ })
+ {
+ CvInvoke.WarpAffine(src, src, translateTransform, src.Size, interpolation);
+ }
}
/// <summary>