首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法读取从flask发送到javascript的对象BoundingPoly。我想在html中使用此边界,并在图像上绘制此边界。

要解决无法读取从 Flask 发送到 JavaScript 的对象 BoundingPoly 的问题,我们需要确保数据在前后端之间的传输是正确的,并且在 JavaScript 中正确解析和使用这些数据。以下是详细的步骤和示例代码:

基础概念

BoundingPoly 是一个表示边界框的多边形对象,通常用于计算机视觉任务中,如目标检测。它包含一系列的顶点坐标,这些坐标定义了边界框的形状。

相关优势

  • 精确性:边界框可以非常精确地定位目标物体。
  • 灵活性:适用于各种形状和大小的目标。
  • 易于实现:在前端使用简单的图形库即可绘制。

类型

  • 矩形边界框:最常见的类型,由四个顶点定义。
  • 多边形边界框:适用于不规则形状的目标。

应用场景

  • 图像标注:在图像编辑软件中标记感兴趣的区域。
  • 自动驾驶:识别和跟踪道路上的车辆和行人。
  • 人脸识别:在视频流中检测和跟踪人脸。

解决方案

后端(Flask)

首先,确保 Flask 端正确地发送 BoundingPoly 对象。假设 BoundingPoly 是一个包含顶点坐标的列表。

代码语言:txt
复制
from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/get_bounding_poly', methods=['GET'])
def get_bounding_poly():
    bounding_poly = {
        "vertices": [
            {"x": 100, "y": 100},
            {"x": 200, "y": 100},
            {"x": 200, "y": 200},
            {"x": 100, "y": 200}
        ]
    }
    return jsonify(bounding_poly)

if __name__ == '__main__':
    app.run(debug=True)

前端(HTML + JavaScript)

在 HTML 中,使用 JavaScript 获取并解析这个对象,然后在图像上绘制边界框。

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Draw Bounding Poly</title>
    <style>
        #image {
            width: 500px;
            height: auto;
        }
    </style>
</head>
<body>
    <img id="image" src="path_to_your_image.jpg" alt="Image">
    <script>
        async function fetchBoundingPoly() {
            const response = await fetch('/get_bounding_poly');
            const data = await response.json();
            return data.vertices;
        }

        function drawBoundingPoly(vertices) {
            const canvas = document.createElement('canvas');
            const ctx = canvas.getContext('2d');
            const img = document.getElementById('image');
            canvas.width = img.width;
            canvas.height = img.height;
            ctx.drawImage(img, 0, 0);

            ctx.beginPath();
            ctx.moveTo(vertices[0].x, vertices[0].y);
            for (let i = 1; i < vertices.length; i++) {
                ctx.lineTo(vertices[i].x, vertices[i].y);
            }
            ctx.closePath();
            ctx.strokeStyle = 'red';
            ctx.lineWidth = 2;
            ctx.stroke();

            document.body.appendChild(canvas);
        }

        fetchBoundingPoly().then(drawBoundingPoly);
    </script>
</body>
</html>

可能遇到的问题及原因

  1. 跨域问题:如果 Flask 应用和前端页面不在同一个域名下,可能会遇到跨域请求问题。可以通过设置 Flask 的 CORS 来解决。
  2. 数据格式错误:确保 Flask 发送的数据格式与 JavaScript 期望的格式一致。
  3. 图像加载问题:确保图像路径正确,并且图像能够成功加载。

解决方法

  • 跨域问题:在 Flask 应用中添加 CORS 支持。
  • 跨域问题:在 Flask 应用中添加 CORS 支持。
  • 数据格式验证:在 JavaScript 中打印接收到的数据,确保其格式正确。
  • 图像加载检查:确保图像路径正确,并在控制台中检查是否有加载错误。

通过以上步骤,你应该能够成功地在 HTML 中读取并使用从 Flask 发送的 BoundingPoly 对象,并在图像上绘制出边界框。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用CDSWCML构建交互式机器学习应用程序

您将使用手机连接到应用程序,在屏幕上的一个方框中画一个数字,并在CML上运行经过训练的模型来预测绘制的内容。可以在github repo找到此代码。 建立模型来预测手绘数字是机器学习的“世界”。...您用手指在黑色正方形中绘制图像,然后单击“预测”。 该Web应用程序提取图像数据,并对CML服务器的模型API进行REST调用。...使用GPU使模型训练的运行速度提高了约10倍。 最后,我们保存模型以供模型服务API使用。 在项目示例代码中,我提供了模型的预训练版本。请注意,如果没有GPU,就无法加载在GPU上训练的模型。...在这种情况下,我们将使用Python Flask 框架从CML服务器提供index.html 。打开Python 3工作台并运行flask_app.py 文件。...绘制图像后,需要将其传递到CML模型API接口。您需要对index.html 文件中的javascript进行一些更改才能使其正常工作。

1.8K20

使用Flask部署图像分类模型

对于每个图像,我们将使用图像分类模型预测图像的类别或类别,并在网页上按类别呈现图像。 ?...它将首先使用get_path函数创建目录,然后发送对源代码的请求。从源代码中,我们将使用“img”标签提取源代码。 在此之后,我们将只选择jpeg格式的图像。也可以添加png格式的图像。...此函数将按以下步骤工作: 首先,它将发送一个请求来下载并存储这些图像。 接下来,它将把目录路径发送到「get_prediction.py」将计算并以字典形式返回结果的文件。...首先,创建一个Flask类的对象,该对象将以当前模块的名称作为参数。route函数将告诉Flask应用程序下一步在网页上呈现哪个URL。 部署模型的工作 你可以在这里下载完整的代码和数据集。...然后我们深入了解了使用PyTorch创建图像分类模型并将其与Flask一起部署的过程中涉及的各个步骤。我希望这有助于你构建和部署图像分类模型。 另外,模型被部署在本地主机上。

3K41
  • 基于OpenCV的数字识别系统

    基本图像处理流程 这是我在测试图像处理中使用的原始图像。它有一些眩光点,但是图像相当干净。让我们逐步完成获取此源图像的过程,并尝试将其分解为单个数字。...阈值为黑/白 填补空白 由于大多数燃油泵都使用某种7段LCD显示屏,因此数字中存在一些细微的间隙,无法使用轮廓绘制方法,因此我们需要使这些段看起来相连。...有关此过程的更多信息,请参见“数字培训”部分。 查找小数 在图像中查找小数点是要解决的另一个问题。由于它很小,有时会连接到它旁边的手指,因此使用我们在手指上使用的方法来确定它似乎有问题。...但是,由于我想在iOS应用程序上重用该系统,因此我需要想出一种可以拥有跨平台分类文件的方式。...这不漂亮,但是我写了一个简单的MatPython中的序列化方法,它将为OpenCV创建合适的结构以在iOS端读取。

    1.3K20

    小白系列(3)| 计算机视觉之直接视觉跟踪

    用边界框表示的球员。 此边界框将定义直方图。通常,我们在灰度图像上使用直方图,但也可以使用彩色直方图。在上图中,我们可以想象矩形边界框的颜色直方图。...因此,按照约定,我们将用边界框表示目标对象。为了跟踪边界框中包含的目标,我们需要定义一个合适的外观模型。在下面的示例中,外观模型是模板强度图像。...在下面的示例中,我们将沿x轴从-20像素移动到+20像素,从目标对象在前一帧中的位置沿y轴从-20像素移动到+20像素(假设我们只有平移)。...现在,如果我们想在 1D 中绘制此函数,它将如下所示: 因此,假设我们沿着x轴方向进行检索。首先,我们将随机选择在x轴的起始位置。假设x=4。然后我们将计算SSD 函数的梯度。...请注意,在下面的示例中,左侧原始图像中的矩形是右侧模板图像的投影版本。 但是,现在我们还无法计算SSD。解决此问题的一种方法是检测两个图像中的关键点,然后使用一些特征匹配算法来查找它们的匹配项。

    67420

    10分钟了解Flutter跨平台运行原理!

    我们从图像显示的基本原理说起。 在计算机系统中,图像的显示需要CPU、GPU和显示器一起配合完成:CPU负责图像数据计算,GPU负责图像数据渲染,而显示器则负责最终图像显示。...CPU把计算好的、需要显示的内容交给GPU,由GPU完成渲染后放入帧缓冲区,随后视频控制器根据垂直同步信号(VSync)以每秒60次的速度,从帧缓冲区读取帧数据交由显示器完成图像显示。...Flutter通过控件树中的每个控件创建不同类型的渲染对象,组成渲染对象树。而渲染对象树在Flutter的展示过程分为三个阶段:布局、绘制、合成和渲染。...(一)布局 Flutter采用深度优先机制遍历渲染对象树,决定渲染对象树中各渲染对象在屏幕上的位置和尺寸。...(二)绘制 布局完成后,渲染对象树中的每个节点都有了明确的尺寸和位置。Flutter会把所有的渲染对象绘制到不同的图层上。与布局过程一样,绘制过程也是深度优先遍历,而且总是先绘制自身,再绘制子节点。

    7K41

    如何在Python中用Bokeh实现交互式数据可视化?

    我主要使用QlikView和Tableau进行数据可视化,用SAS和Python来做预测分析和数据分析。我几乎没有用过JavaScript。...Bokeh的优势: Bokeh允许你通过简单的指令就可以快速创建复杂的统计图, Bokeh提供到各种媒体,如HTML,Notebook文档和服务器的输出 我们也可以将Bokeh可视化嵌入flask和django...可视化图表 为了更好地理解这些步骤,让我用下面的例子来演示一下: 图表范例-1:使用Bokeh创建一个柱状图并在Web浏览器上显示 我们将遵循上述列出的步骤来创建一个图表: ? ?...同样,你可以创建各种其它类型的图:如线、角和圆弧、椭圆、图像、补丁以及许多其它的图。 绘图范例-2:将两种视觉元素合并在一张图中 ? ? 绘图范例-3:为上图添加一个悬停工具和坐标轴标签 ? ?...绘图范例-4:使用纬度和经度数据来绘制印度地图 注:我已经有一个CSV格式的印度边界的纬度和经度的多边形数据。我将使用该数据来绘图。 在这里,我们将使用补丁绘图,让我们看看下面的命令: ? ?

    3.1K70

    现代浏览器探秘(part3):渲染

    如果HTML文档中存在或之类的内容,则预加载扫描器会检查由HTML解析器生成的标记,并在浏览器进程中向网络线程发送请求。 ?...图8:页面元素按HTML标记的顺序出现,会导致错误的渲染图像,因为没有考虑z-index 在此绘制步骤中,主线程遍历布局树以创建绘制记录。...图12:时间轴上的动画帧,但JavaScript阻止了一帧 你可以将JavaScript操作划分为小块,并使用 requestAnimationFrame()安排在每个帧上运行。...图13:在动画帧的时间轴上运行的较小的JavaScript块 合成 你会如何绘制一个页面? 现在浏览器知道文档的结构,每个元素的样式,页面的几何形状和绘制顺序,它是如何绘制页面的?...这时可以从UI线程添加另一个合成器帧以用于浏览器UI更改,或者从其他渲染器进程添加扩充数据。 这些合成器帧被发送到GPU用来在屏幕上显示。

    1.4K10

    基于深度学习的人员跟踪

    image.png CNN 视觉智能是CNN(卷积神经网络)提供给计算机的。卷积神经网络是一种优雅的计算机制可以在图像或视频上运行,以便从图像或视频中提取一些信息。...提取的信息允许用来进行机器学习任务,例如图像分类和目标定位。 目标检测通过在目标周围绘制边界框来定位视频帧或图像中的目标。我们可以将人员跟踪视为目标检测的一种形式——目标是人!...两阶段检测器: 在这种类型的检测器中,需要两个处理阶段:模型的一部分检测到边界框,提取边界框区域发送到模型的另一部分,利用CNN生成128维特征向量。...2.2身份嵌入分支 此分支负责生成与预测边界框相对应的图像块的向量表示,通常将图像补丁(区域块)的信息编码为128维向量,128维向量仅是模型的此分支为每个边界框预测生成的一组数字,该向量是相应帧中跟踪人物的关键...1.热图输出; 2.中心偏移输出; 3.边界框尺寸输出; 4.Re-ID(128维重识别特征向量) 前三个输出负责获取图像中目标(人员)的边界框,第四个输出表示对象的标识,由前三个输出生成的边界框表示产生

    1.4K20

    从零开始学习 YOLOv8:目标检测与车牌识别实例

    车牌检测的原理 车牌检测的过程可以分为几个关键步骤: 图像采集:通过摄像头获取车辆图像。 目标检测:使用 YOLOv8 检测图像中的车辆和车牌区域。...车牌定位:在检测到的车辆区域中进一步定位车牌的位置。 字符分割与识别:使用 EasyOCR 对车牌中的字符进行识别,最终得到车牌号。 1. 图像采集 摄像头负责捕捉周围环境中的图像。...每个图像对应一个文本文件,文件中包含每个目标的类别和边界框坐标。...通过这种结合,你可以准确地提取车牌号码,并在图像上绘制边界框及识别结果。 6. 封装成 API 6.1 环境准备 首先,确保你已经安装了 Flask 和其他所需库。...文件处理:应用检查请求中是否包含文件,并读取上传的图像。 YOLOv8 检测:将图像传递给 YOLOv8 模型进行检测,提取车牌区域。

    61520

    基于OpenCV的数字识别系统

    基本图像处理流程 这是我在测试图像处理中使用的原始图像。它有一些眩光点,但是图像相当干净。让我们逐步完成获取此源图像的过程,并尝试将其分解为单个数字。...阈值为黑/白 填补空白 由于大多数燃油泵都使用某种7段LCD显示屏,因此数字中存在一些细微的间隙,无法使用轮廓绘制方法,因此我们需要使这些段看起来相连。...有关此过程的更多信息,请参见“数字培训”部分。 查找小数 在图像中查找小数点是要解决的另一个问题。由于它很小,有时会连接到它旁边的手指,因此使用我们在手指上使用的方法来确定它似乎有问题。...但是,由于我想在iOS应用程序上重用该系统,因此我需要想出一种可以拥有跨平台分类文件的方式。...这不漂亮,但是我写了一个简单的MatPython中的序列化方法,它将为OpenCV创建合适的结构以在iOS端读取。

    5800

    基于OpenCV的气体泵扫描仪数字识别系统

    除此之外我们希望可以先使用Python对其进行原型设计,然后将处理代码转换为C ++以在iOS应用程序上运行。 目标 我们首先要考虑以下两个问题: 1.我们可以从图像中分离出数字吗?...阈值为黑/白 填补空白 由于大多数燃油泵都使用某种7段LCD显示屏,因此数字中存在一些细微的间隙,无法使用轮廓绘制方法,因此我们需要使这些段看起来相连。...有关此过程的更多信息,请参见“数字培训”部分。 查找小数 在图像中查找小数点是要解决的另一个问题。由于它很小,有时会连接到它旁边的手指,因此使用我们在手指上使用的方法来确定它似乎有问题。...但是,由于我想在iOS应用程序上重用该系统,因此我需要想出一种可以拥有跨平台分类文件的方式。...这不漂亮,但是我写了一个简单的MatPython中的序列化方法,它将为OpenCV创建合适的结构以在iOS端读取。

    6310

    做目标检测,这一篇就够了!2019最全目标检测指南

    (注:每个小节展示的论文图片,均在节末给出了具体的链接) 目标检测如何运作 目标检测定位图像中物体的位置,并在该物体周围绘制边界框,这通常涉及两个过程,分类物体类型,然后在该对象周围绘制一个框。...模型接收图像并提取约2000个自下而上的候选区域,然后,它使用大型CNN计算每个候选区域的特征,此后,它使用特定类的线性支持向量机(SVM)对每个区域进行分类,该模型在PASCAL VOC 2010上实现了...该方法使用前馈卷积神经网络,产生特定目标的一组边界框和分数,添加了卷积特征图层,允许在多个尺度上进行特征检测,在此模型中,每个特征图单元格都关联到一组默认边界框,下图显示了SSD512模型在动物,车辆和家具上的表现...对象大小和姿势等属性根据中心位置的图像特征进行回归,在该模型中,图像被送到卷积神经网络中生成热力图,这些热力图中的最大值表示图像中对象的中心。...为了估计人体姿势,该模型检查2D关节位置并在中心点位置对它们进行回归。 此模型以每秒1.4帧的速度实现了45.1%的COCO平均精度,下图显示了这与其他研究论文中的结果进行比较的结果。 ?

    98830

    实战 | 手把手教你用苹果CoreML实现iPhone的目标识别

    YOLO与Core ML 我们从Core ML开始,因为大多数开发人员希望用此框架将机器学习放入他们的应用程序中。接下来,打开Xcode中的TinyYOLO-CoreML项目。...理想情况下,我们不会TinyYOLO直接使用这个类,而是通过Vision框架。不幸的是,我无法让它工作(在beta 1和2中)。...该computeBoundingBoxes()函数将MLMultiArray转换为可以在屏幕上绘制的边框列表。...事实证明,在我以前的实现中,我已经将填充kernel的边缘设置为“clamp”而不是“zero”。使用''zero",它会在图像的边缘(duh)加零填充,但是用"clamp"会复制边缘图像进行填充。...可以在graph之前或之后运行自定义kernel,或者将图形分为两部分,并在中间进行自己的kernel。但是,如果要在整个网络中使用自定义kernel,则graphAPI无法帮助您。

    4.6K80

    掌握这个关键技术,让你的APP开发事半功倍!——Flutter与其他方案的区别

    CPU把计算好的、需要显示的内容交给GPU,由GPU完成渲染后放入帧缓冲区,随后视频控制器根据垂直同步信号(VSync)以每秒60次的速度,从帧缓冲区读取帧数据交由显示器完成图像显示。...Flutter通过控件树中的每个控件创建不同类型的渲染对象,组成渲染对象树。而渲染对象树在Flutter的展示过程分为四个阶段:布局、绘制、合成和渲染。...布局 Flutter采用深度优先机制遍历渲染对象树,决定渲染对象树中各渲染对象在屏幕上的位置和尺寸。...绘制 布局完成后,渲染对象树中的每个节点都有了明确的尺寸和位置。Flutter会把所有的渲染对象绘制到不同的图层上。与布局过程一样,绘制过程也是深度优先遍历,而且总是先绘制自身,再绘制子节点。...小结 今天,我带你了解了Flutter的历史背景与运行机制,并以界面渲染过程为例,从布局、绘制、合成和渲染四个阶段讲述了Flutter的实现原理。

    54720

    带你认识 flask 时间日期

    因此,让我们从安装Flask-Moment来开始吧: (venv) $ pip install flask-moment 使用常规方法添加该插件到Flask应用中: app/__init__.py:Flask-Moment...我已经决定我只使用UTC时区,因此最后一部分总是将会是Z,它表示ISO 8601标准中的UTC。 moment对象为不同的渲染选项提供了几种方法。...Flask-Moment插件通过启用一个类似于JavaScript上的moment对象,大大简化了对moment.js的使用,并融合了所需的JavaScript逻辑,使渲染后的时间展示在页面上。...我们来看看出现在个人主页中的时间戳。当前的user.html模板使用Python生成时间的字符串表示。...现在我可以使用Flask-Moment渲染此时间戳,如下所示: app/templates/user.html: 使用moment.js渲染时间戳。

    3.3K30

    带你认识 flask ajax 异步请求

    链接文本需要以Flask-Babel可以翻译的方式添加,所以我在定义它时使用了_()函数 请注意,我还没有关联此链接的操作。...如果你不熟悉在浏览器中使用JavaScript,这将是一个很好的学习机会 在浏览器中使用JavaScript时,当前显示的页面在内部被表示为文档对象模型(DOM)。...在此上下文中运行的JavaScript代码可以更改DOM以触发页面中的更改 我们首先需要讨论的是,在浏览器中运行的JavaScript代码如何获取需要发送到服务器中运行的翻译函数的三个参数。...如果你查看*_post.html*模板,则呈现用户动态正文的行只会读取{{post.body}}。我要做的是将这些内容包装在一个元素中。...为了生成引用这个图像的URL,我使用url_for()函数,传递特殊的路由名称static并给出图像的文件名作为参数。

    3.8K20

    10分钟学会使用YOLO及Opencv实现目标检测(上)|附源码

    闲话少叙,下面进入教程的主要内容。 在本教程中,将学习如何使用YOLO、OpenCV和Python检测图像和视频流中的对象。...本文使用YOLOv3,并在COCO数据集上进行训练。 COCO数据集由80个标签组成,可以使用此链接找到YOLO在COCO数据集上训练的内容的完整列表。...YOLO文件后,并利用OpenCV中的cv2.dnn.readNetFromDarknet函数从中读取网络文件及权重参数,此函数需要两个参数configPath 和 weightsPath,这里再次强调...,我们将: 缩放边界框坐标,以便我们可以在原始图像上正确显示它们; 提取边界框的坐标和尺寸,YOLO返回边界框坐标形式: (centerX ,centerY ,width,height); 使用此信息导出边界框的左上角...然后,我们使用随机类颜色在图像上绘制边界框和文本 。最后,显示结果图像,直到用户按下键盘上的任意键。

    12.6K64

    「Adobe国际认证」Adobe Photoshop,如何裁剪并拉直照片?

    如果您启用“自动调整不透明度”,那么当您编辑裁剪边界时会降低不透明度。 删除裁剪的像素禁用此选项以应用非破坏性裁剪,并在裁剪边界外部保留像素。非破坏性裁剪不会移去任何像素。...请按以下步骤进行操作: 1.在工具栏中,选择裁剪工具 ()。裁剪边界显示在照片的边缘上。 2.在选项栏中,选择“内容识别”。默认的裁剪矩形会扩大,以包含整个图像。...当处理包含梯形扭曲的图像时使用透视裁剪工具。当从一定角度而不是以平直视角拍摄对象时,会发生石印扭曲。例如,如果从地面拍摄高楼的照片,则楼房顶部的边缘看起来比底部的边缘要更近一些。...1.要校正图像透视,请按住裁剪工具,然后选择透视裁剪工具 。 2.围绕扭曲的对象绘制选框。将选框的边缘和对象的矩形边缘匹配。...使用裁剪工具调整画布大小 您可以使用裁剪工具调整图像画布的大小。 在工具栏中,选择裁剪工具 。裁剪边界显示在图像的边缘上。 向外拖动裁剪句柄以放大画布。使用 Alt/选项修改键从各个方向进行放大。

    2.9K10

    Qml开发中的性能Tips(翻译文)

    这可以通过将QML的Image异步(asynchronous)设置为true来完成。这样,用户界面就可以保持响应。 请注意,此属性仅对从本地文件系统读取的图像有效。...这样,大图像不会占用超过必要的内存; 这对于从外部源加载或由用户提供的内容尤为重要。 请注意,动态更改此属性会导致重新加载图像源,甚至可能来自网络,如果它不在内存缓存中。...如果您确实需要启用Image的smooth属性,请在动画开始时禁用平滑处理,并在动画结束时重新启用它(仅当图像在屏幕上静止时,缩放瑕疵才可见)。...委托中的元素越少,视图的滚动速度就越快; 在列表委托中,仅将QML用于用户界面,并使用C++实现其余部分(例如:数据生成,数据处理)。不要使用JavaScript。...4.1 在过渡动画中尽可能为屏幕的小区域设置动画 如果您需要在一秒钟内移动3个元素,请尝试每次移动300毫秒。该系统可以计算需要重新绘制的项的边界,并在这些边界内绘制所有内容。

    5K32
    领券