You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
2.7 KiB
Python

from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
import os
from datetime import datetime
import learn.yolov5.detect as DL
from pathlib import PosixPath
import requests, os, json
def upload(request):
if request.method == 'POST':
file = request.FILES.get('file') #获取前端上传的文件
print("************")
print(file)
print("************")
fix = datetime.now().strftime('%Y%m%d%H%M%S%f')+'1' #给文件加前缀防止文件名重复
#以下用绝对路径存储文件,之前我用相对路径一直写不对
curPath = os.path.abspath( os.path.dirname( __file__ ) )
img_path = os.path.abspath(curPath+'/static/upload/'+fix+file.name)
#返回给前端的图片路径用相对路径,前端用绝对路径反而加载不了图片
img_path_res = '/static/detected/'+fix+file.name
print(img_path)
f = open(img_path,'wb')
for i in file.chunks():
f.write(i)
f.close()
RR = DL.run(weights=(curPath+"/yolov5/v6m6.pt"), source=img_path, imgsz=(1280, 1280), project=(curPath+"/static/detected"))
return JsonResponse({'img_name':img_path_res,'code':"【大模型】"+RR, 'flag': True})
def dlurl(request):
if request.method == 'GET':
url = request.GET["url"] #获取前端上传的文件
m_model=request.GET["model"]
print(m_model)
print(url)
name = url.split(r'/')[-1]
if not (name.endswith(".jpg") or name.endswith(".jpeg") or name.endswith(".png") or name.endswith(".bmp")):
return JsonResponse({'flag': False})
fix = datetime.now().strftime('%Y%m%d%H%M%S%f')+'1' #给文件加前缀防止文件名重复
curPath = os.path.abspath( os.path.dirname( __file__ ) )
img_path = os.path.abspath(curPath+'/static/download/'+fix+name)
r = requests.get(url)
# 保存
with open (img_path, 'wb') as f:
f.write(r.content)
f.close
#返回给前端的图片路径用相对路径,前端用绝对路径反而加载不了图片
img_path_res = '/static/detected/'+fix+name
if(int(m_model)==1): #小模型
RR = DL.run(weights=(curPath+"/yolov5/v3s.pt"), source=img_path, project=(curPath+"/static/detected"))
return JsonResponse({'img_name':img_path_res,'code':"【小模型】"+RR, 'flag': True})
if(int(m_model)==2): #大模型
RR = DL.run(weights=(curPath+"/yolov5/v6m6.pt"), source=img_path, imgsz=(1280, 1280), project=(curPath+"/static/detected"))
return JsonResponse({'img_name':img_path_res,'code':"【大模型】"+RR, 'flag': True})
def home(request):
return render(request, 'home.html')