logo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readme
Files and versions

72 lines
2.1 KiB

import subprocess
from typing import NamedTuple
from towhee.operator.base import Operator
from towhee.types import Image
class EmulateSignAndScan(Operator):
"""
A one line summary of this class.
Args:
init_arg_1 (`xxx`):
This argument is ...
"""
def __init__(self) -> None:
super().__init__()
def __call__(self, doc_path: str, out_path: str, sig_img: Image = None, x_off: int = 0, y_off: int = 0) -> NamedTuple('Outputs', [('out_path', str)]):
"""
A one line summary of this function.
Args:
doc_path (`str`):
Document which needs to be signed and scanned in PDF format.
out_path (`str`):
Output document path.
sig_img (`towhee.types.Image`):
Image containing the cropped signature
x_off (`int`):
`x` offset value (used to place the signature in the document.).
y_off (`int`):
`y` offset_value (used to place the signature in the document.)
Returns:
(`Tuple[('result_1', xxx)]`)
A tuple with one values, which is ...
"""
# step 1: copy signature image into document
if sig_img:
cv2.imwrite(sig_img.to_ndarray(), "/tmp/pdf2scan-sig-img.jpg")
cmd = ["composite",
"-density", "150",
"-gravity", "NorthWest",
"-geometry", "+{0}+{1}".format(x_off, y_off),
"/tmp/pdf2scan-sig-img.jpg",
doc_path,
out_path]
else:
cmd = ["cp", doc_path, out_path]
subprocess.call(cmd)
# step 2: "scanify" the document
cmd = ["convert",
"-density", "150",
out_path,
"-rotate", "-0.66",
"-attenuate", "0.2",
"+noise", "Multiplicative",
"-colorspace", "Gray",
"-blur", "3x0.5",
out_path]
subprocess.call(cmd)
Output = NamedTuple('Output', [('out_path', str)])
return Output(out_path)