babalae/better-genshin-impact · error · Exception

未找到原粹树脂图标

Error message

未找到原粹树脂图标

What it means

Error "未找到原粹树脂图标" thrown in babalae/better-genshin-impact.

Source

Thrown at BetterGenshinImpact/GameTask/AutoDomain/Model/ResinStatus.cs:54

    {
        var status = new ResinStatus();

        // 1. 原粹树脂
        var assetScale = systemInfo.AssetScale;
        var originalResinTopIconRa = new RecognitionObject
        {
            Name = "OriginalResinTopIcon",
            RecognitionType = RecognitionTypes.TemplateMatch,
            TemplateImageMat = GameTaskManager.LoadAssetImage("AutoFight", "original_resin_top_icon.png", systemInfo),
            DrawOnWindow = false
        }.InitTemplate();
        using ImageRegion crop1 = region.DeriveCrop(new Rect((int)(1300 * assetScale), (int)(25 * assetScale), (int)(160 * assetScale), (int)(50 * assetScale)));   // 数字位数的不同导致了水平方向上宽泛的区域
        //Cv2.ImShow("test", crop1.SrcMat);
        //Cv2.WaitKey();
        var originalResinRes = crop1.Find(originalResinTopIconRa);
        if (originalResinRes.IsEmpty())
        {
            throw new Exception("未找到原粹树脂图标");
        }

        var originalResinCountRect = new Rect(crop1.X + originalResinRes.Right + (int)(25 * assetScale), (int)(37 * assetScale), (int)(110 * assetScale)/* 考虑最长的“200/200” */, (int)(24 * assetScale));
        using ImageRegion originalResinCountRegion = region.DeriveCrop(originalResinCountRect);
        string cnt1 = ocrService.OcrWithoutDetector(originalResinCountRegion.SrcMat);
        var match = System.Text.RegularExpressions.Regex.Match(cnt1, @"(\d+)\s*[/17]\s*(2|20|200)");
        if (match.Success)
        {
            var numericPart = match.Groups[1].Value;
            status.OriginalResinCount = StringUtils.TryExtractPositiveInt(numericPart, 0);
        }

        // 2. 浓缩树脂
        int startX = crop1.X + originalResinRes.Left - (int)(180 * assetScale); // 从原粹树脂图标位置起算
        var condensedResinTopIconRa = new RecognitionObject
        {
            Name = "CondensedResinTopIcon",
            RecognitionType = RecognitionTypes.TemplateMatch,

View on GitHub (pinned to a7cb36712d)

Solutions

  1. 确认当前游戏界面处于可显示树脂数量的界面(如地图右上角)
  2. 检查截图器工作是否正常,游戏画面未被遮挡
  3. 调整画质,确保图标清晰可识别

Example fix

确保在弹出秘境挑战确认(显示树脂数量)的界面执行识别;使用16:9分辨率并让游戏窗口无遮挡。

When it happens

Trigger: ResinStatus.RecogniseFromRegion 在屏幕右上角固定裁剪区域内模板匹配原粹树脂图标(original_resin_top_icon.png),匹配结果为空时抛出。

Common situations: 当前界面不是带树脂栏的秘境挑战确认界面(如界面未打开、被弹窗遮挡),或分辨率/缩放导致图标区域偏移。


AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13). Data as JSON: /api/errors/a6d94e6c03cda1fb. Report an issue: GitHub.