我正在制作一个人脸检测api,它将图像作为用户的输入。当用户创建POST请求时,如何调用函数? 我有使用opencv制作的人脸检测代码,我想把它集成到我的api中。你知道吗
from django.db import models
import uuid
from .validators import validate_file_extension
def scramble_uploaded_filename(instance,filename):
extension = filename.split(".")[-1]
reformated = "{}.{}".format(uuid.uuid4(),extension)
return reformated
def scramble_uploaded_filename1(instance,filename):
extension = filename.split(".")[-1]
return "{}.{}".format(uuid.uuid4(),extension)
class UploadVideo(models.Model):
video = models.FileField('Uploaded Video',upload_to=scramble_uploaded_filename1, validators=[validate_file_extension] )
class UploadImage(models.Model):
image = models.ImageField('Uploaded Image', upload_to=scramble_uploaded_filename)
from django.conf.urls import url, include
from rest_framework import routers
from imageupload_rest.viewsets import UploadImageViewSet, UploadVideoViewSet
router = routers.DefaultRouter()
router.register('images', UploadImageViewSet, 'images')
router.register('videos', UploadVideoViewSet, 'videos')
app_name = 'reviews'
urlpatterns = [
url(r'^',include(router.urls)),
]
from rest_framework import serializers
from imageupload.models import UploadImage, UploadVideo
class UploadImageSerializer(serializers.ModelSerializer):
class Meta:
model = UploadImage
fields = ('pk', 'image', )
class UploadVideoSerializer(serializers.ModelSerializer):
class Meta:
model = UploadVideo
fields = ('pk', 'video' , )
from rest_framework import viewsets
from imageupload_rest.serializers import UploadImageSerializer, UploadVideoSerializer
from imageupload.models import UploadImage, UploadVideo
class UploadImageViewSet(viewsets.ModelViewSet):
queryset = UploadImage.objects.all()
serializer_class = UploadImageSerializer
class UploadVideoViewSet(viewsets.ModelViewSet):
queryset = UploadVideo.objects.all()
serializer_class = UploadVideoSerializer
#when the user posts an image this function should run
import cv2
import os
import numpy as np
def image(path):
recognizer = cv2.face.LBPHFaceRecognizer_create()
#trainingData.yml is my pretrained model which includes a unique id for each user
recognizer.read('recognizer/trainingData.yml')
detector = `cv2.CascadeClassifier('cascades\data\haarcascade_frontalface_alt2.xml')`
im = cv2.imread(path)
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
faces = detector.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
for (x, y, w, h) in faces:
cv2.rectangle(im, (x, y), (x + w, y + h), (225, 0, 0), 2)
Id, conf = recognizer.predict(gray[y:y + h, x:x + w])
if 2 < conf < 125:
cv2.putText(im, str(Id), (x, y + h),fontface, fontscale, fontcolor)
cv2.imshow('Recognition', im)
cv2.imwrite("image.jpg",im)
cv2.waitKey(0)
res = "true"
return res
我希望这个函数在用户发布图像后运行。你知道吗
在使用
modelViewset
时,需要覆盖modelViewset生命周期方法的现有post
方法。检查CreateAPIView相关问题 更多 >
编程相关推荐