Python 对象检测:在连续请求中覆盖图像
我正在尝试使用flask实现一个对象检测web应用程序 我的应用程序的流程是:Python 对象检测:在连续请求中覆盖图像,python,flask,Python,Flask,我正在尝试使用flask实现一个对象检测web应用程序 我的应用程序的流程是: 用户将上载一个图像 映像将保存到目录(“/static/uploads”文件夹) 一个名为“get_images”的函数将读取图像,加载对象检测器模型,最后在指定的文件夹(“/static/detections/”中写入具有检测功能的图像 然后,名为“upload.html”的模板将显示上载目录中的上载图像,以及检测目录中的检测图像 第一次运行和再次启动服务器时,应用程序运行正常。但是,如果我在第一张图像上运行检
- 用户将上载一个图像
- 映像将保存到目录(“/static/uploads”文件夹)
- 一个名为“get_images”的函数将读取图像,加载对象检测器模型,最后在指定的文件夹(“/static/detections/”中写入具有检测功能的图像
- 然后,名为“upload.html”的模板将显示上载目录中的上载图像,以及检测目录中的检测图像
app = Flask(__name__)
UPLOAD_FOLDER = './static/uploads/'
DETECTION_FOLDER = './static/detections/'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['DETECTION_FOLDER'] = DETECTION_FOLDER
# app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
# app.config['TEMPLATES_AUTO_RELOAD'] = True
@app.route("/")
def index():
return render_template("index.html")
@app.route("/about")
def about():
return render_template("about.html")
@app.route('/uploader', methods = ['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['file']
# create a secure filename
filename = secure_filename(f.filename)
print(filename)
# save file to /static/uploads
filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
print(filepath)
f.save(filepath)
print(filepath)
get_image(filepath,filename)
return render_template("uploaded.html", display_detection = filename, fname = filename)
if __name__ == '__main__':
app.run(port=4000, debug=True)
函数get_image()
是文件app_helper.py
的一种方法,并最终在图像上执行cv2.imwrite,并进行检测。我认为问题可能出在代码的这一部分,因为这是唯一一个完成“编写”的地方。因此,我多次运行app_helper.py函数,而不是一次覆盖图像(在“/static/detections/”文件夹中)
我加入了一些图片来更好地解释我的担忧
由于新文件名(phone.jpg)现在与“phone2.jpg”相同的图像相关联,因此检测图像不会改变。我不断重复这一点,我上传的任何新图片都被“phone2.jpg”覆盖了
我重复一遍,我尝试分别运行get_images()方法-即使在多个图像上运行它,也没有发生这样的覆盖。对于ref,get_images()方法是对代码的轻微修改。('upload.html'依赖于文件名来显示图像,该文件名在此处维护)
e、 g.get_图像('/data/images/kite.jpg','kite.jpg')
ps-我也试着加上
# app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
# app.config['TEMPLATES_AUTO_RELOAD'] = True
而且,在第一次执行之后,我清空了uploads and detections文件夹,检查这是否有帮助,
但这些都不起作用
请帮助我,我希望我的应用程序能够承受多次运行(上传和检测),而不会出现此类问题
谢谢。isn;t在
get_image
partfilepath=os.path.dirname(filepath)
?您已经同时添加了文件名和文件路径earlier@sahasrara62是的,get_images尽管有完整的路径(文件名在末尾),但仍有'filename'参数,这是因为我可以轻松提取图像名,并将最终图像与检测结果以相同的名称保存在检测结果目录中。@sahasrara62仍然,我记录了路径,并使用记录的路径手动运行了get_images,但这并没有导致此类问题。