afshin-dini's picture
Update the main code to have the detection results in data as well as img type
1b8dd75
Raw History Blame Contribute Delete
1.75 kB
"""Run the main code for Deep-Barcode-Reader"""
# pylint: disable=E1101
from pathlib import Path
import logging
import asyncio
import click
import cv2
from deep_barcode_reader import __version__
from deep_barcode_reader.logging import config_logger
from deep_barcode_reader.barcode import Wrapper
logger = logging.getLogger(__name__)
@click.command()
@click.version_option(version=__version__)
@click.option(
"-v",
"--verbose",
count=True,
help="Shorthand for info/debug/warning/error loglevel (-v/-vv/-vvv/-vvvv)",
)
@click.option(
"-s",
"--result_path",
type=str,
default="output/test.png",
help="Path to save the result file.",
)
@click.option(
"-d",
"--data_path",
required=True,
type=click.Path(exists=True),
help="Path to data file.",
)
@click.option(
"-m",
"--method",
type=click.Choice(["opencv", "zbar", "qrreader"], case_sensitive=False),
default="opencv",
help="Path to data file.",
)
@click.option(
"--model_size",
type=click.Choice(["n", "s", "m", "l"], case_sensitive=False),
default="m",
help="Model size for the barcode reader.",
)
def deep_barcode_reader_cli(
verbose: int, result_path: str, data_path: Path, method: str, model_size: str
) -> None:
"""It can read different types of barcodes"""
if verbose == 1:
log_level = 10
elif verbose == 2:
log_level = 20
elif verbose == 3:
log_level = 30
else:
log_level = 40
config_logger(log_level)
reader = Wrapper(model_size=model_size, method=method)
_ = asyncio.get_event_loop().run_until_complete(
reader.method_selection(
image=cv2.imread(str(data_path)), result_path=result_path
)
)