【问题标题】:How do you create a model using opencv in django?如何在 django 中使用 opencv 创建模型?
【发布时间】:2021-04-27 09:42:19
【问题描述】:

任何人都知道谁将 django 和 opencv(cv2) 集成在一起。我的目标是创建一个可以存储用户及其图片的模型。我第一次尝试只使用 UserPicture.objects.create(user=request.user, picture=image) 但这不起作用,因为该函数没有将请求作为参数。我应该以某种方式创建一个 APIView 吗?无论如何,这是我用于 opencv 类的代码:

class VideoCamera(object):
    def __init__(self):
        self.video = cv2.VideoCapture(0, cv2.CAP_DSHOW)

    def __del__(self):
        self.video.release()
    
    def create_facial_boundary(self, image, cascadeClassifier, color, emotion):
        grayScaled = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
        face = cascadeClassifier.detectMultiScale(grayScaled, 1.1, 10)
        coords = []
        for (x, y, w, h) in face:
            cv2.rectangle(image, (x, y), (x + w, y + h), color)
            roi_gray = grayScaled[y : y+h, x: x+w]
            cv2.putText(image, emotion, (x, y-4), cv2.FONT_HERSHEY_PLAIN, 2, (255, 255, 255))
            coords = [x, y, w, h]
        self.update_time()
        return coords, image

    def detect_face(self, image, cascadeClassifier):
      color = {"green" : (0, 145, 25)}
      coords, image = self.create_facial_boundary(image, cascadeClassifier, color["green"], "ExText")
      image = cv2.flip(image, 1)
      return image

    def update_time(self):
        time.sleep(5)

    def get_user_face(self):
        success, frame  = self.video.read()
        # img_file = "User-Face.jpg"
        frame = self.detect_face(frame, cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'))
        new_frame = cv2.flip(frame, 1)
        _, image = cv2.imencode(".jpg", new_frame)
        return image
    
    def get_user_emotion():
        pass

    def get_frame(self):
        success, frame = self.video.read()
        image_flip = cv2.flip(frame, 1)
        ret, jpeg = cv2.imencode('.jpg', image_flip)
        return jpeg.tobytes()
    
    

def gen(camera):
    while True:
        frame = camera.get_frame()
        yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')

def get_image(camera):
    image = camera.get_user_face()
    return image

        
def video_feed(request):
    while True:
        return StreamingHttpResponse(gen(VideoCamera()),
                    content_type='multipart/x-mixed-replace; boundary=frame')

【问题讨论】:

    标签: python django opencv face-detection


    【解决方案1】:

    首先,不推荐你打开图片的方式,使用from PIL import Image打开(opencvrequests一起使用时推荐的方式)。
    其次,检查您是否真的收到了请求中的图像。

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 2021-02-02
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      相关资源
      最近更新 更多