将图像从HTML画布发送到Flask Python无法正常工作 - javascript

我正在尝试使用html和js创建一个flask应用程序。它从网络摄像头获取图像,将其存储在html canvas中,然后将canvas转换为数据url,然后通过ajax将其发送到flask。然后,我使用base64解码数据并使用cv2 imdecode读取数据。

我遇到的问题是图像的python代码根本没有执行。我的网页加载完毕,一切正常,但是当我拍照时,什么也没发生。

还有另一件事是,当在flask中呈现html时,JS的console.log功能不起作用,因此我不知道我的JS代码是否有问题。

能否请您看看我的html和python代码,告诉我我要去哪里错了?我确定应该不会调用应该在ajax的url上调用的python函数。

这是我发送ajax的js:

//Function called on pressing a html button
function takePic() {

  ctx.drawImage(video, 0, 0, canvas.width, canvas.height);//video is the video element in html which is recieving live data from webcam

  var imgURL = canvas.toDataURL();
  console.log(imgURL);
  $.ajax({
    type: "POST",
    url: "http://url/take_pic", //I have doubt about this url, not sure if something specific must come before "/take_pic"
    data: imgURL,
    success: function(data) {
      if (data.success) {
        alert('Your file was successfully uploaded!');
      } else {
        alert('There was an error uploading your file!');
      }
    },
    error: function(data) {
      alert('There was an error uploading your file!');
    }
  }).done(function() {
    console.log("Sent");
  });

}

我对ajax中的url参数有疑问,我认为在"/take_pic"之前必须有一些特定的东西,而不仅仅是"https://url"

这是我的python:

from flask import Flask,render_template,request
import numpy as np
import cv2
import re
import base64

import io

app = Flask(__name__,template_folder="flask templates")

@app.route('/')
def index():
   return render_template('live webcam and capture.html')

@app.route('/take_pic',methods=["POST"])
def disp_pic():
    data = request.data
    encoded_data = data.split(',')[1]
    nparr = np.fromstring(encoded_data.decode('base64'), np.uint8)
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
    cv2.imshow(img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

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

参考方案

我刚刚创建了新的python和html文件,并放置了类似的代码,现在它可以工作了。不知道错误的确切原因,但是两个代码相同。

如果我得到url(''),我该如何使用另一个URL - javascript

我是新手,正在写这篇文章,但是如果源上没有图像,那么我只有空白。有人可以告诉我,如果我正在获取背景图像,如何获取/images/no-image.jpg:url();这是我的代码:<div class="uk-clearfix uk-position-relative"> <div class="recipeb…

在JavaScript函数中转义引号 - javascript

我正在尝试将变量传递给javascript函数。根据用户的选择,它可以是文本或图像。这里已经讨论了类似的问题,但我无法解决。在php中,我这样编码:if ($choice == 1) { $img = '<img src = "../folder/'.$_SESSION["img"].'�…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript

我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…

使用JS和PHP更改弹出窗口背景图像 - javascript

我有一个JS函数:function zoom(now) { document.getElementById("popup").style.display = "block"; document.getElementById("photos").style.backgroundImage = …