This repository was archived by the owner on Feb 10, 2025. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 26
This repository was archived by the owner on Feb 10, 2025. It is now read-only.
Callback error when annotation surpasses the border of canvas #38
Copy link
Copy link
Open
Description
- When pencil draws from middle toward upper border, portion which surpasses the border appears on the other side.
- When pencil passes beyond lower or right boundary of canvas body, callback error is raised. I believe this is related with how
parse_json
handles binary masks and relative indices of path, I tried to edit
mask_tmp[inds[0], inds[1]] = 1
Sample code:
import dash
import dash_html_components as html
from dash_canvas import DashCanvas
from dash_canvas.utils import array_to_data_url, parse_jsonstring
from dash.dependencies import Input, Output, State
from dash.exceptions import PreventUpdate
import numpy as np
app = dash.Dash(__name__)
canvas_width = 500
canvas_height = 200
app.layout = html.Div([
html.H6('Draw on image and press Save to show annotations geometry'),
html.Div([
DashCanvas(id='canvas',
lineWidth=2,
width=500,
height=200,
hide_buttons=["zoom", "pan", "line", "pencil", "rectangle", "undo", "select"],
lineColor='black',
goButtonTitle='Sign'
),
], className="five columns"),
html.Div([
html.Img(id='my-image', width=300),
], className="five columns"),
])
@app.callback(Output('my-image', 'src'),
[Input('canvas', 'json_data')])
def update_data(string):
if string:
mask = parse_jsonstring(string, (canvas_height, canvas_width))
else:
raise PreventUpdate
return array_to_data_url((255 * mask).astype(np.uint8))
if __name__ == '__main__':
app.run_server(debug=True)
Metadata
Metadata
Assignees
Labels
No labels