【发布时间】:2020-05-06 09:57:26
【问题描述】:
我想使用 django 模板中的输入文件标签上传图像文件。然后我想做两件事:
1)首先我想将上传的图像存储在我项目的目录中。我想在我的应用程序的静态目录下的 img 目录中上传文件,以便轻松访问它。
2)其次,我想将这个新存储的图像的文件名发送到一个名为detect_im()的视图函数
模板:
<form style="display:inline-block;">
<input type="file" class="form-control-file">
<input type="submit" value="Upload"=>
</form>
views.py 中的视图函数
def detect_im(request):
haar_file = 'C:\\Users\\Aayush\\ev_manage\\face_detector\\haarcascade_frontalface_default.xml'
datasets = 'datasets\\'
myid = random.randint(1111, 9999)
path = "C:\\Users\\Aayush\\ev_manage\\face_detector\\" + datasets + str(myid)
if not os.path.isdir(path):
os.mkdir(path)
(width, height) = (130, 100)
face_cascade = cv2.CascadeClassifier(haar_file)
filename = "" //I WANT THE STORED FILE NAME VALUE HERE TO COMPLETE THE PATH FOR FURTHER DETECTION PROCESS BY OPENCV.
image_path = "C:\\Users\\Aayush\\ev_manage\\face_detector\\static\\img\\" + filename
count = 1
while count < 30:
im = cv2.imread(image_path)
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 4)
for (x, y, w, h) in faces:
cv2.rectangle(im, (x, y), (x + w, y + h), (255, 0, 0), 2)
face = gray[y:y + h, x:x + w]
face_resize = cv2.resize(face, (width, height))
cv2.imwrite('% s/% s.png' % (path, count), face_resize)
count += 1
key = cv2.waitKey(10)
if key == 27:
break
return render(request, 'add_dataset.html', {'uid': myid})
最终的流程应该是这样,用户添加图像并单击上传,然后图像被上传到目录,并使用文件名调用 detect_im() 函数,并且该文件名用于 opencv 的路径变量以检测面对它。
感谢阅读。请发布一个至少添加一些代码的答案,因为我是 python 的新手。
【问题讨论】:
标签: python django python-3.x file-upload image-upload