opencv 4.10

This commit is contained in:
EugeneTes
2026-03-24 11:57:27 +01:00
parent 34b74ecdcd
commit a1838cafeb
26 changed files with 231 additions and 34 deletions

View File

@@ -31,8 +31,8 @@
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="OpenCvSharp4" Version="4.6.0.20220608" />
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.6.0.20220608" />
<PackageReference Include="OpenCvSharp4" Version="4.10.0.20241108" />
<PackageReference Include="OpenCvSharp4.Extensions" Version="4.10.0.20241108" />
</ItemGroup>

View File

@@ -93,7 +93,8 @@ public class AnomalyAI: BaseOperation
// black and white mask
var mask = new Mat(30, 48, MatType.CV_8UC1, resultColor);
var mask = new Mat(30, 48, MatType.CV_8UC1);
mask.SetArray(resultColor);
var maskResized = mask.Resize(new Size(currentImage.ImageData.Width, currentImage.ImageData.Height));

View File

@@ -60,7 +60,8 @@ public class BackgroundSeparationModelOperation:BaseOperation,IHaveOrigin
var bytes= MatToBytes(img);
var responseBytes = _transfer.TransferData(ModelName, 3, bytes);
var response = new Mat(img.Rows, img.Cols, MatType.CV_8UC1, responseBytes);
var response = new Mat(img.Rows, img.Cols, MatType.CV_8UC1);
response.SetArray(responseBytes);
var contours = response.Threshold(128, 255, ThresholdTypes.Binary).FindContoursAsArray(RetrievalModes.List, ContourApproximationModes.ApproxSimple);

View File

@@ -78,8 +78,9 @@ public class Color128HalfOperation:BaseOperation
.ToArray();
// black and white mask
var mask = new Mat(_imageHeight, _imageWidth, MatType.CV_8UC1, resultColor);
var mask = new Mat(_imageHeight, _imageWidth, MatType.CV_8UC1);
mask.SetArray(resultColor);
var maskResized = mask.Resize(new Size(currentImage.ImageData.Width, currentImage.ImageData.Height));
context.ActiveImage = new HawkeyeImage() {ImageData = maskResized};

View File

@@ -111,8 +111,9 @@ public abstract class ColorAIOperation:BaseOperation
// black and white mask
var mask = new Mat(_imageHeight, _imageWidth, MatType.CV_8UC1, resultColor);
var mask = new Mat(_imageHeight, _imageWidth, MatType.CV_8UC1);
mask.SetArray(resultColor);
var maskResized = mask.Resize(new Size(currentImage.ImageData.Width, currentImage.ImageData.Height));
context.ActiveImage = new HawkeyeImage() { ImageData = maskResized };

View File

@@ -129,7 +129,8 @@ public class ModelAIOperation: BaseOperation
// black and white mask
var mask = new Mat(outputSizeArray[0], outputSizeArray[1], MatType.CV_8UC1, resultColor);
var mask = new Mat(outputSizeArray[0], outputSizeArray[1], MatType.CV_8UC1);
mask.SetArray(resultColor);
var maskResized = mask.Resize(new Size(currentImage.ImageData.Width, currentImage.ImageData.Height));

View File

@@ -105,7 +105,8 @@ public class RawModelAIOperation: BaseOperation
var outputSizeArray = outputSize.Select(Convert.ToInt32).ToArray();
var mask = new Mat(outputSizeArray[0], outputSizeArray[1], MatType.CV_8UC1, resultColor);
var mask = new Mat(outputSizeArray[0], outputSizeArray[1], MatType.CV_8UC1);
mask.SetArray(resultColor);
var maskResized = mask.Resize(new Size(currentImage.ImageData.Width, currentImage.ImageData.Height));

View File

@@ -13,7 +13,7 @@ public class SkeletonOperation:BaseOperation
if(!CheckGrayscale(context)) return;
var skeleton = new Mat(context.ActiveImage.ImageData.Size(), MatType.CV_8UC1, 0);
var skeleton = new Mat(context.ActiveImage.ImageData.Size(), MatType.CV_8UC1, Scalar.All(0));
var temp = context.ActiveImage.ImageData.Clone();
var element = Cv2.GetStructuringElement(MorphShapes.Cross, new OpenCvSharp.Size(3, 3));
var image = context.ActiveImage.ImageData.Clone();

View File

@@ -49,13 +49,13 @@ public class GaborFilterOperation : BaseOperation
}
var image = context.ActiveImage.ImageData;
var newimage = new Mat(image.Size(), image.Type(), 0);
var newimage = new Mat(image.Size(), image.Type(), Scalar.All(0));
foreach (double theta in steps)
{
var kernel = Cv2.GetGaborKernel(new Size(KSize, KSize), Sigma, theta, Lambda, Gamma, 0, MatType.CV_64F);
kernel /= 1 * kernel.Sum().Val0;
var filtered = new Mat(image.Size(), image.Type(), 0);
var filtered = new Mat(image.Size(), image.Type(), Scalar.All(0));
Cv2.Filter2D(image, filtered, -1, kernel);
Cv2.Max(newimage, filtered, newimage);
}

View File

@@ -21,7 +21,7 @@ public class ImageSizeProportionOperation:BaseOperation
context.ActiveImage = new HawkeyeImage()
{
ImageData = context.ActiveImage!.ImageData.Resize(Size.Zero, Width, Height)
ImageData = context.ActiveImage!.ImageData.Resize(new Size(0,0), Width, Height)
};
Status = $"Image resized to {context.ActiveImage.ImageData.Width}x{context.ActiveImage.ImageData.Height}";

View File

@@ -18,7 +18,7 @@ public class InvertOperation:BaseOperation
if (!CheckImageExists(context)) return;
var res = new Mat(context.ActiveImage.ImageData.Size(), context.ActiveImage.ImageData.Type(), 0);
var res = new Mat(context.ActiveImage.ImageData.Size(), context.ActiveImage.ImageData.Type(), Scalar.All(0));
Cv2.BitwiseNot(context.ActiveImage.ImageData, res);
context.ActiveImage = new HawkeyeImage()
{

View File

@@ -31,7 +31,7 @@ public class TakeBiggestOperation : BaseOperation
var largestContour = contours.OrderByDescending(c => Cv2.ContourArea(c)).First();
var mask = Mat.Zeros(image.Size(), MatType.CV_8UC1).ToMat();
Cv2.DrawContours(mask, new[] {largestContour}, -1, 255, -1);
Cv2.DrawContours(mask, new[] {largestContour}, -1, Scalar.All(255), -1);
context.ActiveImage = new HawkeyeImage()
{

View File

@@ -17,7 +17,7 @@ public class DistanceTransformOperation:BaseOperation
Cv2.MinMaxLoc(distance, out double minVal, out var maxVal);
// clamp the distance transform to 0-255
Cv2.Normalize(distance, res, 0, maxVal, NormTypes.MinMax, MatType.CV_8UC1);
Cv2.Normalize(distance, res, 0, maxVal, NormTypes.MinMax, (int)MatType.CV_8UC1);