【问题标题】:How to overlay two image figures plotly (python)如何覆盖两个图像图形(python)
【发布时间】:2021-02-23 08:17:44
【问题描述】:

我正在尝试在图像上覆盖一个蒙版。例如,我正在尝试像使用两个散点图一样执行此操作,但错误表明在将图形添加到跟踪时数据属性错误。

rgb_pad_removed, thermal_img = get_thermal_and_rgb(img_path)


img, mask = get_masked_image(rgb_pad_removed)

thermal_img_resized = cv2.resize(thermal_img, dsize=(mask.shape[1], mask.shape[0]), interpolation=cv2.INTER_CUBIC)


from plotly.subplots import make_subplots
f1 = px.imshow(rgb_pad_removed)
f2 = px.imshow(mask)

fig = make_subplots()
fig.add_trace(f1)
fig.add_trace(f2)

fig.show()

出现以下错误:

ValueError: 
    Invalid element(s) received for the 'data' property of 
        Invalid elements include: [Figure({
        ect...

我使用的是正确的方法还是有更好的方法?

【问题讨论】:

    标签: python image data-visualization plotly-dash


    【解决方案1】:

    这里的问题是,您将图形添加为跟踪。 add_trace 仅支持跟踪对象。 Trace 基本上是 Scatter 或 Bar。您已添加一个图形作为跟踪。这就是这里的错误。

    要屏蔽图像,您可以这样做。 获取您的图像并从 opencv 添加掩码并显示图像。我添加了一个例子。请检查一下。

    import numpy as np
    import plotly.express as px
    
    img_rgb = np.array([[[255, 0, 0], [0, 255, 0], [0, 0, 255]],
                        [[0, 255, 0], [0, 0, 255], [255, 0, 0]]
                        ], dtype=np.uint8)
    
    mask = np.array([[0, 1, 0],
                     [0, 1, 0]], dtype=np.uint8)
    
    result = cv2.bitwise_and(img_rgb, img_rgb2, mask=mask)
    f1 = px.imshow(result)
    
    f1.show()
    

    【讨论】:

    • 感谢您的回答,我知道如何遮盖图像,但作为示例,我想在绘图中将图像上的遮罩显示为对象,并在可能的情况下显示多个遮罩。
    • 我认为不可能。
    猜你喜欢
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多