JacobLinCool's picture
feat: add app
e73dc89
import gradio as gr
import numpy as np
import cv2
def run(img: np.ndarray, thres: int) -> tuple[np.ndarray, int | str]:
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
if thres > 0:
_, img = cv2.threshold(img, thres, 255, cv2.THRESH_BINARY)
threshold = thres
elif thres < 0:
img = cv2.adaptiveThreshold(
img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, -thres
)
threshold = "adaptive"
else:
threshold, img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
return img, threshold
app = gr.Interface(
fn=run,
inputs=[
gr.Image(label="image"),
gr.Slider(
-30,
255,
-2,
label="threshold",
info="0 for Otsu's method, negative for adaptive thresholding",
),
],
outputs=[
gr.Image(label="processed"),
gr.Label(label="threshold"),
],
allow_flagging="never",
)
app.queue().launch()