File size: 2,530 Bytes
55257c3
1
{"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: streaming_filter_unified"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio opencv-python numpy "]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "import numpy as np\n", "import cv2\n", "\n", "def transform_cv2(frame, transform):\n", "    if transform == \"cartoon\":\n", "        # prepare color\n", "        img_color = cv2.pyrDown(cv2.pyrDown(frame))\n", "        for _ in range(6):\n", "            img_color = cv2.bilateralFilter(img_color, 9, 9, 7)\n", "        img_color = cv2.pyrUp(cv2.pyrUp(img_color))\n", "\n", "        # prepare edges\n", "        img_edges = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)\n", "        img_edges = cv2.adaptiveThreshold(\n", "            cv2.medianBlur(img_edges, 7),\n", "            255,\n", "            cv2.ADAPTIVE_THRESH_MEAN_C,\n", "            cv2.THRESH_BINARY,\n", "            9,\n", "            2,\n", "        )\n", "        img_edges = cv2.cvtColor(img_edges, cv2.COLOR_GRAY2RGB)\n", "        # combine color and edges\n", "        img = cv2.bitwise_and(img_color, img_edges)\n", "        return img\n", "    elif transform == \"edges\":\n", "        # perform edge detection\n", "        img = cv2.cvtColor(cv2.Canny(frame, 100, 200), cv2.COLOR_GRAY2BGR)\n", "        return img\n", "    else:\n", "        return np.flipud(frame)\n", "\n", "\n", "css=\"\"\".my-group {max-width: 500px !important; max-height: 500px !important;}\n", "            .my-column {display: flex !important; justify-content: center !important; align-items: center !important};\"\"\"\n", "\n", "with gr.Blocks(css=css) as demo:\n", "    with gr.Column(elem_classes=[\"my-column\"]):\n", "        with gr.Group(elem_classes=[\"my-group\"]):\n", "            transform = gr.Dropdown(choices=[\"cartoon\", \"edges\", \"flip\"],\n", "                                    value=\"flip\", label=\"Transformation\")\n", "            input_img = gr.Image(sources=[\"webcam\"], type=\"numpy\", streaming=True)\n", "    input_img.stream(transform_cv2, [input_img, transform], [input_img], time_limit=30, stream_every=0.1)\n", "\n", "\n", "if __name__ == \"__main__\":\n", "    demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}