private Angle GetAngle(Mat src) { Angle angle = new Angle(); Mat angleImg = new Mat(); CvInvoke.Resize(src, angleImg, new Size(angleDstWidth, angleDstHeight)); Tensor <float> inputTensors = OcrUtils.SubstractMeanNormalize(angleImg, MeanValues, NormValues); var inputs = new List <NamedOnnxValue> { NamedOnnxValue.CreateFromTensor(inputNames[0], inputTensors) }; try { using (IDisposableReadOnlyCollection <DisposableNamedOnnxValue> results = angleNet.Run(inputs)) { var resultsArray = results.ToArray(); Console.WriteLine(resultsArray); float[] outputData = resultsArray[0].AsEnumerable <float>().ToArray(); return(ScoreToAngle(outputData, angleCols)); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); //throw ex; } return(angle); }
private TextLine GetTextLine(Mat src) { TextLine textLine = new TextLine(); float scale = (float)crnnDstHeight / (float)src.Rows; int dstWidth = (int)((float)src.Cols * scale); Mat srcResize = new Mat(); CvInvoke.Resize(src, srcResize, new Size(dstWidth, crnnDstHeight)); Tensor <float> inputTensors = OcrUtils.SubstractMeanNormalize(srcResize, MeanValues, NormValues); var inputs = new List <NamedOnnxValue> { NamedOnnxValue.CreateFromTensor(inputNames[0], inputTensors) }; try { using (IDisposableReadOnlyCollection <DisposableNamedOnnxValue> results = crnnNet.Run(inputs)) { var resultsArray = results.ToArray(); var dimensions = resultsArray[0].AsTensor <float>().Dimensions; float[] outputData = resultsArray[0].AsEnumerable <float>().ToArray(); return(ScoreToTextLine(outputData, dimensions[1], dimensions[2])); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); //throw ex; } return(textLine); }
public List <TextBox> GetTextBoxes(Mat src, ScaleParam scale, float boxScoreThresh, float boxThresh, float unClipRatio) { Mat srcResize = new Mat(); CvInvoke.Resize(src, srcResize, new Size(scale.DstWidth, scale.DstHeight)); Tensor <float> inputTensors = OcrUtils.SubstractMeanNormalize(srcResize, MeanValues, NormValues); var inputs = new List <NamedOnnxValue> { NamedOnnxValue.CreateFromTensor(inputNames[0], inputTensors) }; try { using (IDisposableReadOnlyCollection <DisposableNamedOnnxValue> results = dbNet.Run(inputs)) { var resultsArray = results.ToArray(); Console.WriteLine(resultsArray); var textBoxes = GetTextBoxes(resultsArray, srcResize.Rows, srcResize.Cols, scale, boxScoreThresh, boxThresh, unClipRatio); return(textBoxes); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); } return(null); }