import numpy as np import cv2 import glob import gradio as gr def shi_tomasi(image, max_corners=100, min_quality=0.01, min_dist=10): gray_img = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) corners_img = cv2.goodFeaturesToTrack(gray_img,max_corners, min_quality, min_dist) corners_img = np.int0(corners_img) for corners in corners_img: x,y = corners.ravel() cv2.circle(image,(x,y),3,[0,255,0],-1) return image demo = gr.Interface( shi_tomasi, inputs=[gr.inputs.Image(type="numpy"), gr.Slider(0, 2000, value=100, step=1, label='Maximum Number of Corners'), gr.Slider(0.01, 0.99, value=0.01, step=0.01, label='Minimum Corner Quality'), gr.Slider(0, 100, value=10, step=1, label='Minumum Euclidean Distance Between Corners'), ], outputs=gr.outputs.Image(type="numpy"), title="Corner Detection", description="Shi-Tomasi Corner Detection", examples=list(map(lambda x: [x, 100, 0.01, 10], glob.glob('./examples/*.jpg'))), allow_flagging="never", ) if __name__ == "__main__": demo.launch()