diff --git a/alg/libqr.cpp b/alg/libqr.cpp index e5da78b..585044c 100644 --- a/alg/libqr.cpp +++ b/alg/libqr.cpp @@ -95,9 +95,12 @@ bool detect_qr(ProcessState &ps, float margin_ratio, bool warp, string &err) } int qr_width = max_x - min_x; int qr_height = max_y - min_y; - if (qr_width < 200 && qr_height < 200 && qr_width < ps.orig->cols * 0.5 && qr_height < ps.orig->rows * 0.5) { - printf("(%d, %d) in (%d, %d)\n", qr_width, qr_height, ps.orig->cols, ps.orig->rows); - err = "qr too small"; + float min_ratio = 0.3; + int min_width = std::max(180, (int)(ps.orig->cols * min_ratio)); + int min_height = std::max(180, (int)(ps.orig->rows * min_ratio)); + if (qr_width < min_width && qr_height < min_height) { + err = string_format("qr too small: %d x %d, thres: %d x %d", + qr_width, qr_height, min_width, min_height); return false; } diff --git a/scanner/pages/emblemscanner/assets/qrtool.wx.wasm.br b/scanner/pages/emblemscanner/assets/qrtool.wx.wasm.br index e21b689..12c8e6a 100755 Binary files a/scanner/pages/emblemscanner/assets/qrtool.wx.wasm.br and b/scanner/pages/emblemscanner/assets/qrtool.wx.wasm.br differ diff --git a/scanner/pages/emblemscanner/emblemscanner.js b/scanner/pages/emblemscanner/emblemscanner.js index b736e23..45d8b81 100644 --- a/scanner/pages/emblemscanner/emblemscanner.js +++ b/scanner/pages/emblemscanner/emblemscanner.js @@ -562,11 +562,20 @@ Page({ * Handle QR processing result */ handleQRResult(result, frame, copiedFrameData = null) { - // Update debug info if available - if (result.debug_data_url) { - this.setData({ - debug_image_data_url: result.debug_data_url - }); + // Update debug info - prioritize WASM debug image, fallback to original frame + if (this.data.enable_debug) { + if (result.debug_data_url) { + // Priority 1: WASM returned a processed debug image (with QR detection overlay, etc.) + this.setData({ + debug_image_data_url: result.debug_data_url + }); + } else if (this.data.debug_current_frame_url) { + // Priority 2: No WASM debug image available, show the raw camera frame + this.setData({ + debug_image_data_url: this.data.debug_current_frame_url + }); + } + // If neither exists, the debug image box will remain empty/previous image } // Generate hint text @@ -576,7 +585,7 @@ Page({ // don't require ok as we only care about the view has a valid qrcode in it // zooming in so that it's more likely to be clear enough for upload if (result.qrcode && result.valid_pattern && is_emblem_qr_pattern(result.qrcode)) { - this.addDebugMessage(`QR detected and ready: ${result.qrcode}`); + this.addDebugMessage(`QR detected: ${result.qrcode} ok: ${result.ok}: err ${result.err}`); // Trigger zoom-in if function is set up if (!this.data.first_qr_found && this.on_first_qr_found) { @@ -785,7 +794,7 @@ Page({ updateDebugFrameUrls(frameDataUrl) { if (!this.data.enable_debug) return; - // Just show the current frame + // Store current frame URL for potential use as fallback this.setData({ debug_current_frame_url: frameDataUrl }); diff --git a/scanner/pages/emblemscanner/emblemscanner.wxml b/scanner/pages/emblemscanner/emblemscanner.wxml index 4feefec..6a4585b 100644 --- a/scanner/pages/emblemscanner/emblemscanner.wxml +++ b/scanner/pages/emblemscanner/emblemscanner.wxml @@ -23,7 +23,8 @@ @@ -73,9 +74,7 @@ - - - + Debug Frame diff --git a/scanner/pages/emblemscanner/emblemscanner.wxss b/scanner/pages/emblemscanner/emblemscanner.wxss index 0109170..1380bff 100644 --- a/scanner/pages/emblemscanner/emblemscanner.wxss +++ b/scanner/pages/emblemscanner/emblemscanner.wxss @@ -219,17 +219,6 @@ view.debug { border: 1px solid rgba(239, 72, 35, 0.8); } -.debug-frame-box { - flex-shrink: 0; -} - -.debug-frame-box image { - width: 64px; - height: 64px; - border: 1px solid rgba(35, 150, 239, 0.8); -} - -.debug-frame-box .debug-label, .debug-image-box .debug-label { font-size: 8px; color: #ffffff;