Ошибка в Flask с openCV Python, TypeError - PullRequest
0 голосов
/ 23 апреля 2020

Я создаю Flask веб-приложение OpenCV для обнаружения лиц и глаз на изображении, которое загружается через файл HTML и обрабатывается в приложении flask, когда я запускаю его, я получаю ошибку TypeError

TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.

Это мой app.py

from flask import Flask, render_template, request
import os
import cv2
import numpy as np 
path1=(os.path.abspath(os.path.dirname(__file__).replace("",""))+"\\assets\\cascade.xml")
path2=(os.path.abspath(os.path.dirname(__file__).replace("",""))+"\\assets\\eye.xml")



app = Flask(__name__)       
@app.route('/', methods=['GET','POST'])
def predict():
    if request.method == 'POST':
        filex = request.files['nm']

        path1=(os.path.abspath(os.path.dirname(__file__).replace("",""))+"\\assets\\cascade.xml")
        path2=(os.path.abspath(os.path.dirname(__file__).replace("",""))+"\\assets\\eye.xml")

        face_cascade = cv2.CascadeClassifier(path1)
        eye_cascade = cv2.CascadeClassifier(path2)

        img = cv2.imread('filex')
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

        faces = face_cascade.detectMultiScale(gray, 1.3, 5)
        for (x,y,w,h) in faces:
            img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
            roi_gray = gray[y:y+h, x:x+w]
            roi_color = img[y:y+h, x:x+w]
            eyes = eye_cascade.detectMultiScale(roi_gray)
            for (ex,ey,ew,eh) in eyes:
                cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

        return render_template('home.html', pic=img)
if __name__ == '__main__' :
    app.run(debug=True)

и это моя домашняя страница 'home. html'

<html>
<title>Upload files</title>
    <body>
        <form action="http://localhost:5000/" method="post" enctype=multipart/form-data >
        <p><input type="file" name="nm"></p>
        <p><input type= "Submit" value="upload"/></p>
        </form>

        <img src={{ pic }}>
    </body>
</html>

, если я пытаюсь открыть дом. html напрямую Я получаю домашнюю страницу и могу выбрать изображение, когда нажимаю на кнопку загрузки. Я получаю другой тип ошибки

cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

Я знаю, что это не правильный способ сделать но все же я подумал, что это может помочь !!!

Заранее спасибо

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