Я создаю 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'
Я знаю, что это не правильный способ сделать но все же я подумал, что это может помочь !!!
Заранее спасибо