work on new crop

This commit is contained in:
Boki 2026-02-12 22:07:54 -05:00
parent 9845e7f9bf
commit a7fab55d44
22 changed files with 975 additions and 10 deletions

View file

@ -581,6 +581,14 @@
</div>
</div>
<div style="margin-bottom:16px">
<div class="section-title" style="margin-bottom:6px">Tooltip Method</div>
<select id="ocrTooltipMethod" class="mode-select" style="width:100%" onchange="toggleOcrSections()">
<option value="diff">Diff Detection</option>
<option value="edge">Edge Detection</option>
</select>
</div>
<div style="margin-bottom:16px">
<div class="section-title" style="margin-bottom:6px">Tooltip Preprocess</div>
<select id="ocrTooltipPreprocess" class="mode-select" style="width:100%" onchange="toggleOcrSections()">
@ -590,8 +598,8 @@
</select>
</div>
<div style="margin-bottom:16px">
<div class="section-title" style="margin-bottom:6px">Crop Detection</div>
<div id="diffCropParams" style="margin-bottom:16px">
<div class="section-title" style="margin-bottom:6px">Crop Detection (Diff)</div>
<div class="settings-grid">
<div class="setting-row">
<label>Diff Threshold</label>
@ -608,6 +616,32 @@
</div>
</div>
<div id="edgeCropParams" style="margin-bottom:16px;display:none">
<div class="section-title" style="margin-bottom:6px">Crop Detection (Edge)</div>
<div class="settings-grid">
<div class="setting-row">
<label>Canny Low</label>
<input type="number" id="ocrCannyLow" value="50" />
</div>
<div class="setting-row">
<label>Canny High</label>
<input type="number" id="ocrCannyHigh" value="150" />
</div>
<div class="setting-row">
<label>Min Line Length</label>
<input type="number" id="ocrMinLineLength" value="100" />
</div>
<div class="setting-row">
<label>ROI Size</label>
<input type="number" id="ocrRoiSize" value="1400" />
</div>
<div class="setting-row">
<label>Density Threshold</label>
<input type="number" id="ocrDensityThreshold" value="0.15" step="0.01" />
</div>
</div>
</div>
<div style="margin-bottom:16px">
<div class="section-title" style="margin-bottom:6px">OCR Processing</div>
<div class="settings-grid">
@ -1160,7 +1194,24 @@
const screenPp = document.getElementById('ocrScreenPreprocess').value;
document.getElementById('screenTophatParams').style.display = screenPp === 'tophat' ? '' : 'none';
const tooltipPp = document.getElementById('ocrTooltipPreprocess').value;
const method = document.getElementById('ocrTooltipMethod').value;
const isEdge = method === 'edge';
// Show/hide method-specific crop params
document.getElementById('diffCropParams').style.display = isEdge ? 'none' : '';
document.getElementById('edgeCropParams').style.display = isEdge ? '' : 'none';
// Disable bgsub when edge (no reference frame)
const ppSelect = document.getElementById('ocrTooltipPreprocess');
const bgsubOption = ppSelect.querySelector('option[value="bgsub"]');
if (isEdge) {
bgsubOption.disabled = true;
if (ppSelect.value === 'bgsub') ppSelect.value = 'tophat';
} else {
bgsubOption.disabled = false;
}
const tooltipPp = ppSelect.value;
document.getElementById('tooltipBgsubParams').style.display = tooltipPp === 'bgsub' ? '' : 'none';
document.getElementById('tooltipTophatParams').style.display = tooltipPp === 'tophat' ? '' : 'none';
@ -1175,11 +1226,20 @@
if (!data.ok) return;
document.getElementById('ocrEngine').value = data.engine || 'easyocr';
document.getElementById('ocrScreenPreprocess').value = data.screenPreprocess || 'none';
document.getElementById('ocrTooltipMethod').value = data.tooltipMethod || 'diff';
document.getElementById('ocrTooltipPreprocess').value = data.tooltipPreprocess || 'tophat';
document.getElementById('ocrSaveDebugImages').checked = data.saveDebugImages !== false;
const tp = data.tooltipParams || {};
const crop = tp.crop || {};
const ocr = tp.ocr || {};
// Edge params
const ep = data.edgeParams || {};
const edgeCrop = ep.crop || {};
document.getElementById('ocrCannyLow').value = edgeCrop.cannyLow ?? 50;
document.getElementById('ocrCannyHigh').value = edgeCrop.cannyHigh ?? 150;
document.getElementById('ocrMinLineLength').value = edgeCrop.minLineLength ?? 100;
document.getElementById('ocrRoiSize').value = edgeCrop.roiSize ?? 1400;
document.getElementById('ocrDensityThreshold').value = edgeCrop.densityThreshold ?? 0.15;
document.getElementById('ocrDiffThresh').value = crop.diffThresh ?? 20;
document.getElementById('ocrMaxGap').value = crop.maxGap ?? 20;
document.getElementById('ocrTrimCutoff').value = crop.trimCutoff ?? 0.4;
@ -1237,11 +1297,29 @@
if (!isNaN(wt)) tooltipParams.ocr.widthThs = wt;
}
const tooltipMethod = document.getElementById('ocrTooltipMethod').value;
const edgeParams = {
crop: {
cannyLow: parseInt(document.getElementById('ocrCannyLow').value) || 50,
cannyHigh: parseInt(document.getElementById('ocrCannyHigh').value) || 150,
minLineLength: parseInt(document.getElementById('ocrMinLineLength').value) || 100,
roiSize: parseInt(document.getElementById('ocrRoiSize').value) || 1400,
densityThreshold: parseFloat(document.getElementById('ocrDensityThreshold').value) || 0.15,
},
ocr: {
upscale: parseInt(document.getElementById('ocrUpscale').value) || 2,
kernelSize: parseInt(document.getElementById('ocrTooltipKernel').value) || 21,
},
};
const body = {
engine,
screenPreprocess: screenPp,
tooltipMethod,
tooltipPreprocess: tooltipPp,
tooltipParams,
edgeParams,
saveDebugImages: document.getElementById('ocrSaveDebugImages').checked,
};