From 0158f02eec1174349b7f94cf34ac44a9895bf434 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Setni=C4=8Dka?= <setnicka@seznam.cz>
Date: Mon, 31 Oct 2022 18:08:21 +0100
Subject: [PATCH] =?UTF-8?q?Skeny:=20Detekce=20QR=20k=C3=B3du=20na=20=C4=8D?=
 =?UTF-8?q?ernob=C3=ADl=C3=A9m=20obr=C3=A1zku?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Použit práh 180 (value > 180 = bílý pixel). Detekuje QR kódy lépe, než
detekce na šedém obrázku.

Obrázek pro zobrazení při třídění ukládáme barevný, předtím byl šedý.
---
 mo/jobs/protocols.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/mo/jobs/protocols.py b/mo/jobs/protocols.py
index 3ba6498f..8c2db413 100644
--- a/mo/jobs/protocols.py
+++ b/mo/jobs/protocols.py
@@ -20,6 +20,7 @@ from mo.jobs import TheJob, job_handler
 from mo.util import logger, part_path, tex_arg
 import mo.util_format
 
+SCAN_BW_THRESHOLD = 180  # 0-255, pixel nad toto číslo = bílý pixel
 
 #
 # Job create_protocols: Vygeneruje formuláře protokolů
@@ -355,10 +356,10 @@ def _process_scan_file(args: ScanJobArgs) -> ScanJobResult:
         )
         del page_img
 
-        full_img = full_img.convert('L')               # Grayscale
-        full_size = full_img.size
+        (full_width, full_height) = full_img.size
+        test_img = full_img.convert('L').point(lambda x: 255 if x > SCAN_BW_THRESHOLD else 0, mode='1')
 
-        codes = pyzbar.decode(full_img, symbols=[pyzbar.ZBarSymbol.QRCODE])
+        codes = pyzbar.decode(test_img, symbols=[pyzbar.ZBarSymbol.QRCODE])
         codes = [c for c in codes if c.type == 'QRCODE' and c.data.startswith(b'MO:')]
         qr = None
         if codes:
@@ -372,7 +373,7 @@ def _process_scan_file(args: ScanJobArgs) -> ScanJobResult:
 
         full_img.save(f'{args.out_prefix}-{page_nr:04d}-full.png')
 
-        small_img = full_img.resize((full_size[0] // 4, full_size[1] // 4))
+        small_img = full_img.resize((full_width // 4, full_height // 4))
         small_img.save(f'{args.out_prefix}-{page_nr:04d}-small.png')
 
         logger.debug(f'Scan: Strana #{page_nr}: {qr}')
-- 
GitLab