mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-04-06 11:55:31 +08:00
38 lines
1.7 KiB
C#
38 lines
1.7 KiB
C#
using System.Diagnostics;
|
|
using BetterGenshinImpact.Core.Recognition.OCR;
|
|
using BetterGenshinImpact.Core.Recognition.ONNX.SVTR;
|
|
using BetterGenshinImpact.Core.Recognition.OpenCv;
|
|
using OpenCvSharp;
|
|
|
|
namespace BetterGenshinImpact.Test.Simple;
|
|
|
|
public class OcrTest
|
|
{
|
|
public static void TestYap()
|
|
{
|
|
Mat mat = Cv2.ImRead(@"E:\HuiTask\更好的原神\临时文件\fuben_jueyuan.png", ImreadModes.Grayscale);
|
|
var text = TextInferenceFactory.Pick.Inference(PreProcessForInference(mat));
|
|
Debug.WriteLine(text);
|
|
|
|
Mat mat2 = Cv2.ImRead(@"E:\HuiTask\更好的原神\临时文件\fuben_jueyuan.png", ImreadModes.Grayscale);
|
|
var text2 = OcrFactory.Paddle.Ocr(mat2);
|
|
Debug.WriteLine(text2);
|
|
}
|
|
|
|
private static Mat PreProcessForInference(Mat mat)
|
|
{
|
|
// Yap 已经改用灰度图了 https://github.com/Alex-Beng/Yap/commit/c2ad1e7b1442aaf2d80782a032e00876cd1c6c84
|
|
// 二值化
|
|
// Cv2.Threshold(mat, mat, 0, 255, ThresholdTypes.Otsu | ThresholdTypes.Binary);
|
|
//Cv2.AdaptiveThreshold(mat, mat, 255, AdaptiveThresholdTypes.GaussianC, ThresholdTypes.Binary, 31, 3); // 效果不错 但是和模型不搭
|
|
//mat = OpenCvCommonHelper.Threshold(mat, Scalar.FromRgb(235, 235, 235), Scalar.FromRgb(255, 255, 255)); // 识别物品不太行
|
|
// 不知道为什么要强制拉伸到 221x32
|
|
mat = ResizeHelper.ResizeTo(mat, 221, 32);
|
|
// 填充到 384x32
|
|
var padded = new Mat(new Size(384, 32), MatType.CV_8UC1, Scalar.Black);
|
|
padded[new Rect(0, 0, mat.Width, mat.Height)] = mat;
|
|
//Cv2.ImWrite(Global.Absolute("padded.png"), padded);
|
|
return padded;
|
|
}
|
|
}
|