Отправка изображения из HTML-холста в Python флакона не работает - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь создать приложение для колб с html и js. Он берет изображение с веб-камеры, сохраняет его в html canvas, а затем конвертирует canvas в url данных и отправляет его в колбу через ajax. Затем я использую base64 для декодирования данных и чтения их с помощью imdecode cv2.

Проблема, с которой я столкнулся, состоит в том, что мой python-код изображения вообще не выполняется. Моя веб-страница загружается, все работает, но когда я делаю снимок, ничего не происходит.

Кроме того, функция JS console.log не работает при рендеринге html в колбе, поэтому я не знаю, что-то не так с моим кодом JS.

Можете ли вы посмотреть мой HTML, а также код Python, чтобы сказать мне, где я иду не так? Я уверен, что функция python, которая должна вызываться по URL-адресу ajax, не вызывается.

Это мой JS для отправки AJAX:

//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");
  });

}

У меня есть вопрос по поводу параметра url в ajax, я думаю, что до этого должно быть что-то конкретное "/take_pic", а не просто "https://url".

Вот мой питон:

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)

1 Ответ

0 голосов
/ 15 января 2019

Я только что создал новые файлы Python и HTML и поместил похожий код, и теперь он работает. Не знаю точную причину ошибки, но оба кода одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...